Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
FltMgr поддерживает обмен данными между приложениями пользовательского режима (UM) и мини-фильтрами режима ядра (KM) через порты связи. Примером сценария является антивирусное приложение, которое должно взаимодействовать с его мини-фильтром KM для сканирования файлов для вирусов и вредоносных программ.
Минифильтр управляет безопасностью порта путем указания дескриптора безопасности, применяемого к объекту порта связи. Обмен данными через порт связи не буферичен, поэтому он быстрее и эффективнее.
Приложение или служба единой системы обмена сообщениями может отвечать на сообщения из минифильтра для двунаправленного взаимодействия. Обмен данными устанавливается следующим образом:
Драйвер минифильтра вызывает FltCreateCommunicationPort для создания порта сервера коммуникации. Как создатель порта прослушивателя, минифильтр неявно и немедленно начинает прослушивать входящие подключения на созданном порту.
Когда приложение или служба системы унифицированных сообщений вызывает FilterConnectCommunicationPort, чтобы попытаться подключиться к порту, FltMgr вызывает подпрограмму обратного вызова ConnectNotifyCallback минифильтра с дескриптором для вновь созданного подключения. После завершения обратного вызова FltMgr передает вызывающей стороне в пространстве пользователя отдельный дескриптор файла, представляющий конечную точку этого вызывающего объекта в подключении. Вызывающий объект единой системы обмена сообщениями может использовать этот дескриптор для связывания нескольких портов завершения ввода-вывода с портом прослушивателя. Эта возможность полезна для приложений, которые должны одновременно обрабатывать большие объемы операций ввода-вывода.
FltMgr принимает запрос на подключение, только если вызывающий объект единой системы обмена сообщениями имеет достаточный доступ, как указано дескриптором безопасности на порту. Каждое подключение к порту получает собственную очередь сообщений и частные конечные точки.
Закрытие конечной точки (ядра или пользователя) завершает это соединение. Когда вызывающий объект системы обработки вызовов UM закрывает дескриптор к конечной точке, FltMgr вызывает процедуру DisconnectNotifyCallback драйвера минифильтра, чтобы драйвер минифильтра мог закрыть свой дескриптор к соединению.
Закрытие порта сервера связи предотвращает новые подключения, но не завершает существующие подключения. FltMgr завершает существующие подключения при выгрузке драйвера минифильтра.
Подпрограммы FltMgr для обмена данными между UM и KM
FltMgr предоставляет следующие процедуры поддержки для минифильтров для взаимодействия с приложениями UM:
Приложения и службы единой системы обмена сообщениями могут использовать следующие системные подпрограммы поддержки для взаимодействия с драйверами мини-фильтра:
Подпрограммы обратного вызова минифильтра для взаимодействия между UM и KM
Минифильтр реализует следующие подпрограммы обратного вызова для поддержки взаимодействия между UM и KM. Он передает указатели на эти подпрограммы при вызове FltCreateCommunicationPort.
| Имя функции обратного вызова | Тип подпрограммы обратного вызова |
|---|---|
| ConnectNotifyCallback | PFLT_CONNECT_NOTIFY |
| DisconnectNotifyCallback | PFLT_DISCONNECT_NOTIFY |
| MessageNotifyCallback | PFLT_MESSAGE_NOTIFY |