Partager via


Rappel préopération du système de fichiers minifiltre _Flt_CompletionContext_Outptr_ annotation

Utilisez l’annotation _Flt_CompletionContext_Outptr_ lorsque vous déclarez la fonction de rappel de pré-opération du système de fichiers minifiltre PFLT_PRE_OPERATION_CALLBACK. Placez cette annotation sur le paramètre CompletionContext . Cette annotation indique à l’outil d’analyse du code de case activée que la valeur CompletionContext est correcte pour la valeur de retour FLT_PREOP_CALLBACK_STATUS.

Si une fonction de rappel de pré-opération (PFLT_PRE_OPERATION_CALLBACK) retourne FLT_PREOP_SUCCESS_WITH_CALLBACK ou FLT_PREOP_SYNCHRONIZE la valeur CompletionContext peut ou non être NULL. Pour tout autre FLT_PREOP_CALLBACK_STATUS valeur de retour, la valeur CompletionContext doit avoir la valeur NULL. L’état CompletionContext est défini par le filtre qui est passé du rappel de pré-opération du filtre à la fonction de rappel post-opération correspondante (PFLT_POST_OPERATION_CALLBACK). Le rappel post-opération est appelé uniquement si le filtre a renvoyé FLT_PREOP_SUCCESS_WITH_CALLBACK ou FLT_PREOP_SYNCHRONIZE à partir de sa fonction de rappel avant l’opération. Si le filtre ne transmet aucun état de sa fonction de rappel avant l’opération à sa fonction de rappel post-opération, la valeur CompletionContext a la valeur NULL. Par conséquent, CompletionContext dans sa fonction de rappel post-opération aura la valeur NULL. Chaque filtre individuel décide s’il faut retourner l’état dans CompletionContext à partir d’une fonction de rappel avant l’opération. Il appartient donc à chaque filtre individuel de savoir s’il doit ou non examiner CompletionContext dans sa fonction de rappel post-opération.

Exemple

L’exemple suivant montre le prototype de fonction d’une fonction PFLT_PRE_OPERATION_CALLBACK appelée SwapPreReadBuffers. Le paramètre CompletionContext reçoit le contexte qui sera passé à la fonction de rappel post-opération et il est déclaré avec _Flt_CompletionContext_Outptr_ annotation.

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

L’annotation _Flt_CompletionContext_Outptr_ est définie dans specstrings.h. L’utilisation de l’annotation peut ajouter une vérification des erreurs précieuse sans ajouter de surcharge ou de complexité à votre code.

PFLT_PRE_OPERATION_CALLBACK

PFLT_POST_OPERATION_CALLBACK

Annotations SAL 2.0 pour les pilotes Windows