다음을 통해 공유


PFLT_MESSAGE_NOTIFY 콜백 함수(fltkernel.h)

FltMgr 사용자 모드 애플리케이션이 FilterSendMessage 호출하여 클라이언트 포트를 통해 미니 필터에 메시지를 보낼 때마다 미니 필터의 MessageNotifyCallback 콜백 함수를 호출합니다.

통사론

PFLT_MESSAGE_NOTIFY PfltMessageNotify;

NTSTATUS PfltMessageNotify(
  PVOID PortCookie,
  PVOID InputBuffer,
  ULONG InputBufferLength,
  PVOID OutputBuffer,
  ULONG OutputBufferLength,
  PULONG ReturnOutputBufferLength
)
{...}

매개 변수

PortCookie

[in] 이 클라이언트 포트를 고유하게 식별하는 미니 필터 정의 정보에 대한 포인터입니다. 클라이언트 포트를 만들 때 미니 필터는 ConnectNotifyCallback 루틴의 ConnectionPortCookie 매개 변수에서 이 컨텍스트 포인터를 반환했습니다.

InputBuffer

[in] 미니 필터로 보낼 메시지를 포함하는 호출자 할당 버퍼에 대한 포인터입니다.

InputBuffer 잠금 해제된 원시 사용자 모드 버퍼에 대한 포인터입니다. 이 포인터는 사용자 모드 프로세스의 컨텍스트에서만 유효하며 블록을 제외한 try 내에서만 액세스해야 합니다.

FltMgrProbeForRead 호출하여 이 포인터의 유효성을 검사하지만 버퍼가 제대로 정렬되었는지는 확인하지 않습니다. 버퍼에 맞춤 요구 사항이 있는 구조체가 포함된 경우 미니 필터는 필요한 맞춤 검사를 수행합니다. 이를 위해 미니 필터는 MiniSpy 샘플 미니 필터에 표시된 대로 IS_ALIGNED 매크로를 사용할 수 있습니다.

이 매개 변수는 선택 사항이며 NULL일 수 있습니다.

InputBufferLength

[in] InputBuffer 가리키는 버퍼의 크기(바이트)입니다. InputBuffer NULL인 경우 이 매개 변수는 무시됩니다.

OutputBuffer

[out] 미니 필터에서 회신(있는 경우)을 수신하는 호출자 할당 버퍼에 대한 포인터입니다.

OutputBuffer 잠금 해제된 원시 사용자 모드 버퍼에 대한 포인터입니다. 이 포인터는 사용자 모드 프로세스의 컨텍스트에서만 유효하며 블록을 제외한 try 내에서만 액세스해야 합니다.

FltMgrProbeForWrite 호출하여 이 포인터의 유효성을 검사하지만 버퍼가 제대로 정렬되었는지는 확인하지 않습니다. 버퍼에 맞춤 요구 사항이 있는 구조체가 포함된 경우 미니 필터는 필요한 맞춤 검사를 수행합니다. 이를 위해 미니 필터는 MiniSpy 샘플 미니 필터에 표시된 대로 IS_ALIGNED 매크로를 사용할 수 있습니다.

이 매개 변수는 선택 사항이며 NULL일 수 있습니다.

OutputBufferLength

[in] OutputBuffer가 가리키는 버퍼의 크기(바이트)입니다. OutputBuffer NULL인 경우 이 매개 변수는 무시됩니다.

ReturnOutputBufferLength

[out] OutputBuffer가 가리키는 버퍼에서 반환된 바이트 수를 수신하는 호출자 할당 변수에 포인터입니다.

반환 값

MessageNotifyCallback 작업이 성공하면 STATUS_SUCCESS 반환합니다. 그렇지 않으면 다음과 같은 적절한 NTSTATUS 값을 반환합니다.

반환 코드 의미
STATUS_INSUFFICIENT_RESOURCES 작업을 완료하는 데 충분한 리소스가 없습니다.
STATUS_INVALID_PARAMETER 하나 이상의 입력 매개 변수가 잘못되었습니다.

발언

미니 필터는 필요에 따라 MessageNotifyCallback구현할 수 있습니다. 미니 필터가 이 콜백을 구현하지 않으면 사용자 모드에서 포트로 데이터를 전송하라는 요청이 있으면 오류가 발생합니다.

자세한 내용은 사용자 모드와 미니 필터 간의통신을 참조하세요.

요구 사항

요구
헤더 fltkernel.h
도서관 FltMgr.lib
DLL FltMgr.sys
IRQL PASSIVE_LEVEL

참고 항목

ConnectNotifyCallback

FilterSendMessage

FltCreateCommunicationPort