다음을 통해 공유


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가 캐시되므로 이 플래그는 빠른 I/O뿐만 아니라 IRP 기반 읽기 및 쓰기에도 적용됩니다.
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(Postoperation 콜백) 루틴을 등록할 수 있습니다.

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

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

미니필터는 사후 콜백을 등록하지 않고도 지정된 유형의 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