共用方式為


註冊 Preoperation 和 Postoperation 回呼常式

若要註冊預先操作回呼常式後置回呼常式,迷你篩選驅動程式會在其DriverEntry常式中對FltRegisterFilter進行單一呼叫。 對於FltRegisterFilter中的Registration參數,迷你篩選驅動程式會將指標傳遞至FLT_REGISTRATION結構。 此結構的 OperationRegistration 成員包含 FLT_OPERATION_REGISTRATION 結構的陣列指標,每個類型 I/O 作業都必須篩選迷你篩選驅動程式。

陣列中的每個FLT_OPERATION_REGISTRATION結構,但最後一個結構除外,包含下列資訊:

  • 作業的主要函式程式碼。 如需 I/O 作業及其要求類型特定參數的資訊,請參閱 FLT_PARAMETERS

  • 針對讀取和寫入作業 (IRP_MJ_READ和IRP_MJ_WRITE) ,指定是否忽略快取的 I/O 或分頁 I/O 或 IRP 型 I/O 作業的兩者

  • 最多一個預先操作回呼常式和一個後置回呼常式的進入點

陣列中的最後一個專案必須是 {IRP_MJ_OPERATION_END}。

下列程式碼範例取自掃描器範例迷你篩選驅動程式,會顯示FLT_OPERATION_REGISTRATION結構的陣列。 掃描器範例迷你篩選驅動程式會針對IRP_MJ_CREATE註冊預先操作和後置操作回呼常式,並針對IRP_MJ_CLEANUP和IRP_MJ_WRITE作業註冊預先操作回呼常式。

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}
};