Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O FltMgr dá suporte à comunicação entre aplicativos de modo de usuário (UM) e minifiltros km (modo kernel) por meio de portas de comunicação. Um cenário de exemplo é um aplicativo antivírus que precisa se comunicar com seu equivalente de minifiltro KM para verificar arquivos de vírus e malware.
O minifiltro controla a segurança na porta especificando um descritor de segurança a ser aplicado ao objeto de porta de comunicação. A comunicação por meio de uma porta de comunicação não é armazenada em buffer, portanto, é mais rápida e eficiente.
Um aplicativo ou serviço de UM pode responder a mensagens de um minifiltro para comunicação bidirecional. A comunicação é estabelecida da seguinte maneira:
Um driver de minifiltro chama FltCreateCommunicationPort para criar uma porta de servidor de comunicação. Como criador da porta de escuta, o minifiltro imediatamente começa a escutar as conexões de entrada na porta criada.
Quando um aplicativo ou serviço da UM chama FilterConnectCommunicationPort para tentar se conectar à porta, o FltMgr chama a rotina de retorno de chamada ConnectNotifyCallback do minifiltro com um identificador para a conexão recém-criada. Quando o retorno de chamada for concluído, o FltMgr passará ao chamador um identificador de arquivo separado que representa o ponto de extremidade do chamador da UM para a conexão. O chamador da UM pode usar esse identificador para associar várias portas de conclusão de E/S à porta do ouvinte. Essa funcionalidade é útil para aplicativos que precisam lidar com grandes volumes de operações de E/S simultaneamente.
O FltMgr aceita a solicitação de conexão somente se o chamador de UM tiver acesso suficiente, conforme especificado pelo descritor de segurança na porta. Cada conexão com a porta recebe sua própria fila de mensagens e endpoints privados.
Fechar qualquer dos endpoints (kernel ou user) encerra essa conexão. Quando um chamador da UM fecha seu identificador para o ponto de extremidade, o FltMgr chama a rotina DisconnectNotifyCallback do driver de minifiltro para que o driver de minifiltro possa fechar seu identificador para a conexão.
O fechamento da porta do servidor de comunicação impede novas conexões, mas não encerra as conexões existentes. O FltMgr encerra as conexões existentes quando o driver de minifiltro é descarregado.
Rotinas do FltMgr para comunicação entre UM e KM
O FltMgr fornece as seguintes rotinas de suporte para que os minifiltros se comuniquem com aplicativos de Modo de Usuário:
Os aplicativos e serviços da UM podem usar as seguintes rotinas de suporte fornecidas pelo sistema para se comunicar com drivers de minifiltro:
Rotinas de retorno de chamada de minifiltros para comunicação entre o Modo do Usuário (UM) e o Modo do Kernel (KM)
Um minifilter implementa as seguintes rotinas de callback para suportar a comunicação entre UM e KM. Ele passa ponteiros para essas rotinas quando chama FltCreateCommunicationPort.
| Nome da rotina de retorno de chamada | Tipo de rotina de retorno de chamada |
|---|---|
| ConnectNotifyCallback | PFLT_CONNECT_NOTIFY |
| DisconnectNotifyCallback | PFLT_DISCONNECT_NOTIFY |
| MessageNotifyCallback | PFLT_MESSAGE_NOTIFY |