Callback pre-operazione del file system minifilter _Flt_CompletionContext_Outptr_ annotazione

Usare l'annotazione _Flt_CompletionContext_Outptr_ quando si dichiara la funzione di callback del minifilter minifilter del file system PFLT_PRE_OPERATION_CALLBACK. Inserire questa annotazione nel parametro CompletionContext . Questa annotazione indirizza lo strumento di analisi del codice per verificare che Il completamentoContext sia corretto per il valore restituito FLT_PREOP_CALLBACK_STATUS.

Se una funzione di callback pre-operazione (PFLT_PRE_OPERATION_CALLBACK) restituisce FLT_PREOP_SUCCESS_WITH_CALLBACK o FLT_PREOP_SYNCHRONIZE il completamentoContext potrebbe o non essere NULL. Per qualsiasi altro valore restituito FLT_PREOP_CALLBACK_STATUS il valore CompletionContext deve essere NULL. L'oggetto CompletionContext è lo stato definito dal filtro passato dal callback di pre-operazione del filtro alla funzione di callback post-operazione corrispondente (PFLT_POST_OPERATION_CALLBACK). Il callback post-operazione viene chiamato solo se il filtro restituito FLT_PREOP_SUCCESS_WITH_CALLBACK o FLT_PREOP_SYNCHRONIZE dalla relativa funzione di callback pre-operazione. Se il filtro non passa alcun stato dalla funzione di callback pre-operazione alla funzione di callback post-operazione, la funzione di callback di completamento è NULL e pertanto Il completamentoContext nella funzione di callback post-operazione sarà NULL. Ogni singolo filtro decide se restituire lo stato in CompletamentoContext da una funzione di callback pre-operazione, pertanto è necessario che ogni singolo filtro sappia se deve esaminare Il completamentoContext nella funzione di callback post-operazione.

Esempio

Nell'esempio seguente viene illustrato il prototipo di funzione per una funzione PFLT_PRE_OPERATION_CALLBACKdenominata SwapPreReadBuffers. Il parametro CompletionContext riceve il contesto che verrà passato alla funzione di callback post-operazione e viene dichiarato con _Flt_CompletionContext_Outptr_ annotazione.

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

L'annotazione _Flt_CompletionContext_Outptr_ è definita nelle specifichetrings.h. L'uso dell'annotazione può aggiungere un controllo degli errori prezioso senza aggiungere sovraccarico o complessità al codice.

PFLT_PRE_OPERATION_CALLBACK

PFLT_POST_OPERATION_CALLBACK

Annotazioni SAL 2.0 per i driver Windows