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 구조체의 가변 길이 배열을 만들고 미니필터가 FltRegisterFilter의 Registration 매개 변수로 전달하는 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 포함) |