Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Um Rückrufroutinen vor der Operation und Rückrufroutinen nach der Operation zu registrieren, führt ein Minifiltertreiber einen einzelnen Aufruf von FltRegisterFilter in seiner DriverEntry-Routine durch. Für den Parameter Registration in FltRegisterFilter übergibt der Minifiltertreiber einen Zeiger auf eine FLT_REGISTRATION-Struktur . Der Member OperationRegistration dieser Struktur enthält einen Zeiger auf ein Array von FLT_OPERATION_REGISTRATION Strukturen, einen für jeden Typ von E/A-Vorgängen, den der Minifiltertreiber filtern muss.
Jede FLT_OPERATION_REGISTRATION Struktur im Array mit Ausnahme der letzten enthält die folgenden Informationen:
Der Hauptfunktionscode für den Vorgang. Informationen zu E/A-Vorgängen und deren anforderungstypspezifischen Parametern finden Sie unter FLT_PARAMETERS .
Für Lese- und Schreibvorgänge (IRP_MJ_READ und IRP_MJ_WRITE) eine Reihe von Flags, die angeben, ob zwischengespeicherte E/A- oder Paging-E/A-Vorgänge oder beides für IRP-basierte E/A-Vorgänge ignoriert werden sollen
Einstiegspunkte für bis zu eine Voroperationsrückrufroutine und eine Postoperation-Rückrufroutine
Das letzte Element im Array muss {IRP_MJ_OPERATION_END} sein.
Das folgende Codebeispiel, das aus dem Scanner-Beispiel-Minifiltertreiber stammt, zeigt ein Array von FLT_OPERATION_REGISTRATION Strukturen. Der Scanner-Beispiel-Minifiltertreiber registriert Preoperations- und Postoperation-Rückrufroutinen für IRP_MJ_CREATE- und Präoperationsrückrufroutinen für IRP_MJ_CLEANUP und IRP_MJ_WRITE Vorgänge.
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}
};