다음을 통해 공유


FLT_OPERATION_REGISTRATION 구조체(fltkernel.h)

FLT_OPERATION_REGISTRATION 구조는 작업 콜백 루틴을 등록하는 데 사용됩니다.

통사론

typedef struct _FLT_OPERATION_REGISTRATION {
  UCHAR                            MajorFunction;
  FLT_OPERATION_REGISTRATION_FLAGS Flags;
  PFLT_PRE_OPERATION_CALLBACK      PreOperation;
  PFLT_POST_OPERATION_CALLBACK     PostOperation;
  PVOID                            Reserved1;
} FLT_OPERATION_REGISTRATION, *PFLT_OPERATION_REGISTRATION;

회원

MajorFunction

I/O 작업의 형식을 지정하는 주 함수 코드입니다. 이 멤버는 필수이며 NULL 수 없습니다. 추가 작업에 대한 자세한 내용은 FLT_PARAMETERS참조하세요.

Flags

캐시된 I/O 또는 페이징 I/O 작업에 대한 사전 작업(PFLT_PRE_OPERATION_CALLBACK) 및 사후 작업(PFLT_POST_OPERATION_CALLBACK) 콜백 루틴을 호출할 시기를 지정하는 플래그의 비트 마스크입니다. 이 멤버는 선택 사항이며 0일 수 있습니다.

묘사
FLTFL_OPERATION_REGISTRATION_SKIP_PAGING_IO(0x00000001) 미니 필터는 읽기 또는 쓰기 작업에 대해 이 플래그를 설정하여 페이징 I/O 작업에 대한 사전 작업 및 사후 콜백 루틴을 호출하지 않도록 지정합니다. 이 플래그는 IRP 기반 I/O 작업에만 적용됩니다. IRP 기반이 아닌 I/O 작업에 대해서는 무시됩니다.
FLTFL_OPERATION_REGISTRATION_SKIP_CACHED_IO(0x00000002) 미니 필터는 읽기 또는 쓰기 작업에 대해 이 플래그를 설정하여 캐시된 I/O 작업에 대해 해당 사전 작업 및 사후 콜백 루틴을 호출하지 않도록 지정합니다. 이 플래그는 모든 빠른 I/O가 캐시되므로 IRP 기반 읽기 및 쓰기뿐만 아니라 빠른 I/O에도 적용됩니다.
FLTFL_OPERATION_REGISTRATION_SKIP_NON_DASD_IO(0x00000004) 미니 필터는 비 DASD 볼륨 핸들에서 실행된 모든 작업을 건너뛰도록 이 플래그를 설정합니다. 이 작업에 대한 미니 필터의 콜백은 무시됩니다.
FLTFL_OPERATION_REGISTRATION_SKIP_NON_CACHED_NON_PAGING_IO(0x00000008) 미니 필터는 캐시되거나 페이징되지 않은 읽기 또는 쓰기 작업을 건너뛰도록 이 플래그를 설정합니다. 이 작업에 대한 미니 필터의 콜백은 무시됩니다. 이 플래그는 IRP_MJ_READ 및 IRP_MJ_WRITE 요청에만 관련됩니다.

PreOperation

이 유형의 I/O 작업에 대한 사전 작업 콜백 루틴으로 등록할 PFLT_PRE_OPERATION_CALLBACK형식화된 루틴에 대한 포인터입니다. 이 멤버는 선택 사항이며 NULL 수 있습니다.

PostOperation

이 유형의 I/O 작업에 대한 사후 콜백 루틴으로 등록할 PFLT_POST_OPERATION_CALLBACK형식화된 루틴에 대한 포인터입니다. 이 멤버는 선택 사항이며 NULL 수 있습니다.

Reserved1

시스템 사용을 위해 예약되어 있습니다. 미니 필터는 이 멤버를 NULL 설정해야 합니다.

발언

미니 필터가 DriverEntry 루틴에서 FltRegisterFilter 호출하는 경우 처리해야 하는 각 유형의 I/O 작업에 대해 사전 운용 콜백(PFLT_PRE_OPERATION_CALLBACK) 루틴 및PFLT_POST_OPERATION_CALLBACK후 콜백(PFLT_POST_OPERATION_CALLBACK) 루틴을 등록할 수 있습니다.

이러한 콜백 루틴을 등록하기 위해 미니 필터는 FLT_OPERATION_REGISTRATION 구조체의 가변 길이 배열을 만들고 미니 필터가 FltRegisterFilterRegistration 매개 변수로 전달하는 FLT_REGISTRATION 구조의 OperationRegistration 멤버에 배열에 대한 포인터를 저장합니다. 이 배열의 마지막 요소는 {IRP_MJ_OPERATION_END}이어야 합니다.

미니 필터는 처리하는 각 유형의 I/O 작업에 대해 별도의 FLT_OPERATION_REGISTRATION 구조를 만들어야 합니다. 이 구조에서 미니 필터는 구조체의 PreOperationPostOperation 멤버에서 콜백 루틴의 진입점을 지정합니다.

미니 필터는 사후 콜백을 등록하지 않고 지정된 유형의 I/O 작업에 대한 사전 운용 콜백 루틴을 등록할 수 있으며 그 반대의 경우도 마찬가지입니다.

파일 시스템은 IRP_MJ_POWER 또는 IRP_MJ_DEVICE_CHANGE 요청을 받지 않습니다. 미니 필터는 이러한 작업에 대한 사전 작업 또는 사후 콜백 루틴을 등록할 수 없습니다.

미니 필터는 IRP_MJ_SHUTDOWN 대한 사후 콜백 루틴을 등록할 수 없습니다.

단일 사전 작업 또는 사후 콜백 루틴을 사용하여 둘 이상의 I/O 작업을 처리할 수 있습니다. 그러나 콜백 루틴은 각 유형의 I/O 작업에 대해 별도로 등록해야 합니다.

요구 사항

요구
헤더 fltkernel.h(Fltkernel.h 포함)

참고 항목

FLT_REGISTRATION

FltRegisterFilter

PFLT_POST_OPERATION_CALLBACK

PFLT_PRE_OPERATION_CALLBACK