다음을 통해 공유


사용자 모드와 미니 필터 간의 통신

FltMgr 은 통신 포트를 통해 UM(사용자 모드) 애플리케이션과 KM(커널 모드) 미니 필터 간의 통신을 지원합니다. 예제 시나리오는 바이러스 및 맬웨어 파일을 검사하기 위해 KM 미니 필터와 통신해야 하는 바이러스 백신 애플리케이션입니다.

미니 필터는 통신 포트 개체에 적용할 보안 설명자를 지정하여 포트의 보안을 제어합니다. 통신 포트를 통한 통신은 버퍼링되지 않으므로 더 빠르고 효율적입니다.

UM 앱 또는 서비스는 양방향 통신을 위해 미니 필터의 메시지에 회신할 수 있습니다. 통신은 다음과 같이 설정됩니다.

  • 미니 필터 드라이버는 FltCreateCommunicationPort를 호출하여 통신 서버 포트를 만듭니다. 수신기 포트의 작성자는 미니 필터가 만든 포트에서 들어오는 연결을 즉시 암시적으로 수신 대기하기 시작합니다.

  • UM 앱 또는 서비스가 FilterConnectCommunicationPort를 호출하여 포트에 연결을 시도하는 경우 FltMgr은 새로 만든 연결에 대한 핸들을 사용하여 미니 필터의 ConnectNotifyCallback 콜백 루틴을 호출합니다. 콜백이 완료되면 FltMgr 은 UM 호출자에게 UM 호출자의 엔드포인트를 나타내는 별도의 파일 핸들을 연결에 전달합니다. UM 호출자는 이 핸들을 사용하여 여러 I/O 완료 포트를 수신기 포트와 연결할 수 있습니다. 이 기능은 대량의 I/O 작업을 동시에 처리해야 하는 앱에 유용합니다.

FltMgr 은 UM 호출자가 포트의 보안 설명자에 지정된 대로 충분한 액세스 권한이 있는 경우에만 연결 요청을 수락합니다. 포트에 대한 각 연결은 자체 메시지 큐 및 프라이빗 엔드포인트를 가져옵니다.

엔드포인트(커널 또는 사용자)를 닫으면 해당 연결이 종료됩니다. UM 호출자가 엔드포인트 에 대한 핸들을 닫으면 FltMgr 은 미니 필터 드라이버의 DisconnectNotifyCallback 루틴을 호출하여 미니 필터 드라이버가 연결에 대한 핸들을 닫을 수 있도록 합니다.

통신 서버 포트를 닫으면 새 연결이 차단되지만 기존 연결은 종료되지 않습니다. FltMgr 은 미니 필터 드라이버가 언로드되면 기존 연결을 종료합니다.

UM과 KM 간의 통신을 위한 FltMgr 루틴

FltMgr 은 미니 필터가 UM 애플리케이션과 통신할 수 있도록 다음과 같은 지원 루틴을 제공합니다.

UM 애플리케이션 및 서비스는 다음 시스템 제공 지원 루틴을 사용하여 미니 필터 드라이버와 통신할 수 있습니다.

UM과 KM 간의 통신을 위한 미니 필터 콜백 루틴

미니 필터는 UM과 KM 간의 통신을 지원하기 위해 다음 콜백 루틴을 구현합니다. FltCreateCommunicationPort를 호출할 때 이러한 루틴에 대한 포인터를 전달합니다.

콜백 루틴 이름 콜백 루틴 유형
ConnectNotifyCallback PFLT_CONNECT_NOTIFY
DisconnectNotifyCallback PFLT_DISCONNECT_NOTIFY
MessageNotifyCallback PFLT_MESSAGE_NOTIFY