FltCreateCommunicationPort 함수(fltkernel.h)
FltCreateCommunicationPort 미니 필터가 사용자 모드 애플리케이션 및 서비스에서 연결 요청을 받을 수 있는 통신 서버 포트를 만듭니다.
통사론
NTSTATUS FLTAPI FltCreateCommunicationPort(
PFLT_FILTER Filter,
PFLT_PORT *ServerPort,
POBJECT_ATTRIBUTES ObjectAttributes,
PVOID ServerPortCookie,
PFLT_CONNECT_NOTIFY ConnectNotifyCallback,
PFLT_DISCONNECT_NOTIFY DisconnectNotifyCallback,
PFLT_MESSAGE_NOTIFY MessageNotifyCallback,
LONG MaxConnections
);
매개 변수
Filter
[in] 호출자에 대한 불투명 필터 포인터입니다.
ServerPort
[out] 통신 서버 포트에 대한 불투명 포트 핸들을 수신하는 호출자 할당 변수에 대한 포인터입니다. 미니 필터는 이 핸들을 사용하여 사용자 모드 애플리케이션에서 들어오는 연결 요청을 수신 대기합니다.
ObjectAttributes
[in] 통신 서버 포트의 특성을 지정하는 OBJECT_ATTRIBUTES 구조체에 대한 포인터입니다. 이 구조체는 initializeObjectAttributes
구성원 | 값 |
---|---|
길이 |
InitializeObjectAttributes 이 멤버를 sizeof(OBJECT_ATTRIBUTES) 설정합니다. |
objectName |
포트 개체의 고유한 이름(예: L"\MyFilterPort")이 포함된 UNICODE_STRING 구조체에 대한 포인터입니다. |
SecurityDescriptor | 포트 개체에 적용할 보안 설명자(SECURITY_DESCRIPTOR)에 대한 포인터입니다. 필요한 경우 FltBuildDefaultSecurityDescriptor호출하여 기본 보안 설명자를 만들 수 있습니다. |
특성 | 포트 핸들에 대해 원하는 특성을 지정하는 플래그의 비트 마스크입니다. 이러한 플래그에는 OBJ_KERNEL_HANDLE 포함되어야 합니다. 호출자는 필요에 따라 OBJ_CASE_INSENSITIVE 플래그를 설정할 수 있습니다. 이는 이름 조회 코드가 정확한 일치 검색을 수행하는 대신 ObjectName 대/소문자를 무시해야 함을 나타냅니다. |
ServerPortCookie
[in, optional] 미니 필터에서 정의한 컨텍스트 정보에 대한 포인터입니다. 이 정보는 동일한 미니 필터에서 만든 여러 통신 서버 포트를 구분하는 데 사용할 수 있습니다. FltMgr 이 컨텍스트 포인터를 ConnectNotifyCallback 루틴에 매개 변수로 전달합니다. 이 매개 변수는 선택 사항이며 NULL일 수 있습니다.
ConnectNotifyCallback
[in] 호출자가 제공한 ConnectNotifyCallback 콜백 루틴에 대한 포인터입니다. FltMgr 사용자 모드 애플리케이션이 FilterConnectCommunicationPort 호출하여 미니 필터에 연결 요청을 보낼 때마다 이 루틴을 호출합니다. 이 매개 변수는 필수이며 NULL일 수 없습니다.
DisconnectNotifyCallback
[in] 호출자가 제공한 DisconnectNotifyCallback 콜백 루틴에 대한 포인터입니다. FltMgr 클라이언트 포트의 사용자 모드 핸들 수가 0에 도달하거나 미니 필터가 언로드될 때마다 이 루틴을 호출합니다. 이 매개 변수는 필수이며 NULL일 수 없습니다.
MessageNotifyCallback
[in, optional] 호출자가 제공한 MessageNotifyCallback 콜백 루틴에 대한 포인터입니다. FltMgr 사용자 모드 애플리케이션이 FilterSendMessage 호출하여 클라이언트 포트를 통해 미니 필터에 메시지를 보낼 때마다 이 루틴을 호출합니다. 이 매개 변수는 선택 사항이며 NULL일 수 있습니다. NULL인 경우 포트에 데이터를 보내기 위해 사용자 모드에서 수행한 모든 요청에 오류가 발생합니다.
MaxConnections
[in] 이 서버 포트에 대해 허용되는 최대 동시 클라이언트 연결 수입니다. 이 매개 변수는 필수이며 0보다 커야 합니다.
반환 값
FltCreateCommunicationPort STATUS_SUCCESS 또는 다음 중 하나와 같은 적절한 NTSTATUS 값을 반환합니다.
반환 코드 | 묘사 |
---|---|
STATUS_FLT_DELETING_OBJECT | 지정된 필터 삭제되고 있습니다. 오류 코드입니다. |
STATUS_INSUFFICIENT_RESOURCES | FltCreateCommunicationPort 풀 할당 오류가 발생했습니다. 오류 코드입니다. |
STATUS_OBJECT_NAME_COLLISION | 이름이 같은 미니 필터 통신 포트가 이미 있습니다. 포트 이름은 고유해야 합니다. 오류 코드입니다. |
발언
미니 필터는 fltCreateCommunicationPort
서버 포트를 만든 후 사용자 모드 애플리케이션은 FilterConnectCommunicationPort호출하여 포트에 연결할 수 있습니다. 연결되면 사용자 모드 애플리케이션은
호출자는 FltCreateCommunicationPortObjectAttributes 매개 변수에 대한 OBJ_KERNEL_HANDLE 특성 플래그를 설정해야 합니다. 이 플래그를 설정하면 FltCreateCommunicationPort 호출자가 실행될 수 있는 컨텍스트에서 사용자 모드 프로세스에서 미니 필터 통신 서버 포트 핸들을 사용할 수 없습니다. 이 플래그를 설정하지 않으면 fltCreateCommunicationPort
FltCreateCommunicationPort 만드는
자세한 내용은 사용자 모드와 미니 필터간의
요구 사항
요구 | 값 |
---|---|
대상 플랫폼 | 보편적 |
헤더 | fltkernel.h(Fltkernel.h 포함) |
라이브러리 | FltMgr.lib |
DLL | Fltmgr.sys |
IRQL |
PASSIVE_LEVEL |
참고 항목
filterConnectCommunicationPort
FilterGetMessage
FilterReplyMessage
FilterSendMessage
fltBuildDefaultSecurityDescriptor
probeForRead
probeForWrite