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 구조를 만들어야 합니다. 이 구조에서 미니 필터는 구조체의 PreOperation 및 PostOperation 멤버에서 콜백 루틴의 진입점을 지정합니다.
미니 필터는 사후 콜백을 등록하지 않고 지정된 유형의 I/O 작업에 대한 사전 운용 콜백 루틴을 등록할 수 있으며 그 반대의 경우도 마찬가지입니다.
파일 시스템은 IRP_MJ_POWER 또는 IRP_MJ_DEVICE_CHANGE 요청을 받지 않습니다. 미니 필터는 이러한 작업에 대한 사전 작업 또는 사후 콜백 루틴을 등록할 수 없습니다.
미니 필터는 IRP_MJ_SHUTDOWN 대한 사후 콜백 루틴을 등록할 수 없습니다.
단일 사전 작업 또는 사후 콜백 루틴을 사용하여 둘 이상의 I/O 작업을 처리할 수 있습니다. 그러나 콜백 루틴은 각 유형의 I/O 작업에 대해 별도로 등록해야 합니다.
요구 사항
요구 | 값 |
---|---|
헤더 | fltkernel.h(Fltkernel.h 포함) |