Введение

Локальная межпроцессная связь (LPC, часто также называемая локальным вызовом процедур или легковесным вызовом процедур) — это внутренняя, недокументированная подсистема межпроцессного взаимодействия, предоставляемая ядром Microsoft Windows NT для организации легковесного IPC между процессами на одном компьютере. Начиная с Windows Vista, LPC была переработана в асинхронную локальную межпроцессную связь.

Интерфейс (A)LPC является частью недокументированного Native API Windows NT и, следовательно, недоступен приложениям для непосредственного использования. Однако его можно использовать косвенно в следующих случаях:
при использовании Microsoft RPC API для локального взаимодействия, то есть между процессами на одном и том же компьютере;
путем вызова API Windows, реализованных с использованием (A)LPC (см. ниже).

Известное использование

(A)LPC широко используется для связи между внутренними подсистемами в Windows NT. Подсистема Win32 активно использует (A)LPC для обмена данными между клиентом и сервером подсистемы (CSRSS). В версии 3.51 Windows NT был представлен Quick LPC для ускорения этих вызовов. Однако в версии 4.0 от этого метода в значительной степени отказались в пользу переноса критически важных для производительности компонентов сервера в режим ядра (win32k.sys). Подсистема локальной службы безопасности (LSASS), менеджер сеансов (SMSS) и диспетчер служб используют порты (A)LPC напрямую для связи с клиентскими процессами. Winlogon и Security Reference Monitor используют его для связи с процессом LSASS. Как упоминалось ранее, Microsoft RPC может использовать (A)LPC в качестве транспортного протокола, когда клиент и сервер находятся на одном компьютере. Многие службы, предназначенные для работы только на локальном компьютере, используют (A)LPC как единственный транспорт через RPC. Реализация удаленных OLE и DCOM во многих случаях также использует (A)LPC для локальной связи.