Freigeben über


Rückruf des Dateisystemminifilters vor dem Vorgang _Flt_CompletionContext_Outptr_ Anmerkung

Verwenden Sie die _Flt_CompletionContext_Outptr_ Anmerkung, wenn Sie die Rückruffunktion des Dateisystemminifilters vor dem Vorgang PFLT_PRE_OPERATION_CALLBACK deklarieren. Platzieren Sie diese Anmerkung im CompletionContext-Parameter . Diese Anmerkung weist das Codeanalysetool an, um zu überprüfen, ob completionContext für den FLT_PREOP_CALLBACK_STATUS Rückgabewert richtig ist.

Wenn eine Rückruffunktion vor dem Vorgang (PFLT_PRE_OPERATION_CALLBACK) FLT_PREOP_SUCCESS_WITH_CALLBACK oder FLT_PREOP_SYNCHRONIZE zurückgibt, ist completionContext möglicherweise NULL. Für alle anderen FLT_PREOP_CALLBACK_STATUS Rückgabewert muss der CompletionContext NULL sein. CompletionContext ist ein filterdefinierter Zustand, der vom Rückruf vor dem Vorgang des Filters an die entsprechende Rückruffunktion nach dem Vorgang (PFLT_POST_OPERATION_CALLBACK) übergeben wird. Der Rückruf nach dem Vorgang wird nur aufgerufen, wenn der Filter FLT_PREOP_SUCCESS_WITH_CALLBACK oder FLT_PREOP_SYNCHRONIZE von seiner Rückruffunktion vor dem Vorgang zurückgegeben wurde. Wenn der Filter keinen Zustand von seiner Rückruffunktion vor dem Vorgang an seine Rückruffunktion nach dem Vorgang übergibt, ist der CompletionContext NULL, und daher ist CompletionContext in seiner Rückruffunktion nach dem Vorgang NULL. Jeder einzelne Filter entscheidet, ob der Zustand in CompletionContext von einer Rückruffunktion vor dem Vorgang zurückgegeben werden soll. Daher ist es an jedem einzelnen Filter zu wissen, ob er CompletionContext in seiner Rückruffunktion nach dem Vorgang betrachten soll oder nicht.

Beispiel

Das folgende Beispiel zeigt den Funktionsprototyp für eine PFLT_PRE_OPERATION_CALLBACK Funktion namens SwapPreReadBuffers. Der CompletionContext-Parameter empfängt den Kontext, der an die Rückruffunktion nach dem Vorgang übergeben wird, und er wird mit _Flt_CompletionContext_Outptr_ Anmerkung deklariert.

FLT_PREOP_CALLBACK_STATUS
SwapPreReadBuffers(
    _Inout_ PFLT_CALLBACK_DATA Data,
    _In_ PCFLT_RELATED_OBJECTS FltObjects,
    _Flt_CompletionContext_Outptr_ PVOID *CompletionContext
    );

Die _Flt_CompletionContext_Outptr_ Anmerkung wird in specstrings.h definiert. Die Verwendung der Anmerkung kann wertvolle Fehlerüberprüfungen hinzufügen, ohne Dem Code mehr Aufwand oder Komplexität zu verleihen.

PFLT_PRE_OPERATION_CALLBACK

PFLT_POST_OPERATION_CALLBACK

SAL 2.0-Anmerkungen für Windows-Treiber