Abrufen von Kontexten
Sobald ein Minifiltertreiber einen Kontext für ein Objekt festgelegt hat, kann er den Kontext abrufen, indem er eine der folgenden Get-Routinen aufruft:
- FltGetContexts
- FltGetContextsEx
- FltGetFileContext
- FltGetInstanceContext
- FltGetStreamContext
- FltGetStreamHandleContext
- FltGetTransactionContext
- FltGetVolumeContext
Jede erfolgreiche Get-Routine erhöht die Verweisanzahl im Kontext, sodass der Minifilter FltReleaseContext aufruft , wenn er den Kontextzeiger nicht mehr benötigt.
Im folgenden Codebeispiel aus dem SwapBuffers-Beispielminifilter ruft der Minifiltertreiber FltGetVolumeContext auf, um einen Volumekontext abzurufen:
status = FltGetVolumeContext(
FltObjects->Filter, //Filter
FltObjects->Volume, //Volume
&volCtx); //Context
...
if (volCtx != NULL) {
FltReleaseContext(volCtx);
}
Wenn der Aufruf von FltGetVolumeContext erfolgreich ist, empfängt der Context-Parameter die Adresse des Volumekontexts des Aufrufers. FltGetVolumeContext erhöht die Verweisanzahl für den Kontextzeiger . Wenn dieser Zeiger also nicht mehr benötigt wird, muss der Minifiltertreiber ihn durch Aufrufen von FltReleaseContext freigeben.