사전 작업 및 사후 콜백 루틴 등록
사전 운용 콜백 루틴 및 사후 콜백 루틴을 등록하기 위해 미니필터 드라이버는 DriverEntry 루틴에서 FltRegisterFilter를 단일 호출합니다. FltRegisterFilter의 Registration 매개 변수의 경우 미니필터 드라이버는 FLT_REGISTRATION 구조체에 대한 포인터를 전달합니다. 이 구조체의 OperationRegistration 멤버에는 미니필터 드라이버가 필터링해야 하는 각 I/O 작업 유형에 대해 하나씩 FLT_OPERATION_REGISTRATION 구조체 배열에 대한 포인터가 포함되어 있습니다.
배열의 각 FLT_OPERATION_REGISTRATION 구조체는 마지막 구조체를 제외하고 다음 정보를 포함합니다.
작업의 주요 함수 코드입니다. I/O 작업 및 요청 유형별 매개 변수에 대한 자세한 내용은 FLT_PARAMETERS 참조하세요.
읽기 및 쓰기 작업(IRP_MJ_READ 및 IRP_MJ_WRITE)의 경우 IRP 기반 I/O 작업에 대해 캐시된 I/O 또는 페이징 I/O 또는 둘 다를 무시할지 여부를 지정하는 플래그 집합입니다.
최대 하나의 사전 운용 콜백 루틴 및 1개의 사후 콜백 루틴에 대한 진입점
배열의 마지막 요소는 {IRP_MJ_OPERATION_END}이어야 합니다.
스캐너 샘플 미니필터 드라이버에서 가져온 다음 코드 예제는 FLT_OPERATION_REGISTRATION 구조체의 배열을 보여 줍니다. 스캐너 샘플 미니필터 드라이버는 IRP_MJ_CLEANUP 및 IRP_MJ_WRITE 작업에 대한 IRP_MJ_CREATE 및 사전 운용 콜백 루틴에 대한 사전 운용 및 사후 콜백 루틴을 등록합니다.
const FLT_OPERATION_REGISTRATION Callbacks[] = {
{IRP_MJ_CREATE,
0,
ScannerPreCreate,
ScannerPostCreate},
{IRP_MJ_CLEANUP,
0,
ScannerPreCleanup,
NULL},
{IRP_MJ_WRITE,
0,
ScannerPreWrite,
NULL},
{IRP_MJ_OPERATION_END}
};