Compartilhar via


Anotação de _Flt_CompletionContext_Outptr_ de retorno de chamada de pré-operação do minifiltro do sistema de arquivos

Use a anotação _Flt_CompletionContext_Outptr_ ao declarar a função de retorno de chamada de pré-operação de minifiltro do sistema de arquivos PFLT_PRE_OPERATION_CALLBACK. Coloque essa anotação no parâmetro CompletionContext . Essa anotação direciona a ferramenta de análise de código para marcar que CompletionContext está correto para o valor retornado FLT_PREOP_CALLBACK_STATUS.

Se uma função de retorno de chamada de pré-operação (PFLT_PRE_OPERATION_CALLBACK) retornar FLT_PREOP_SUCCESS_WITH_CALLBACK ou FLT_PREOP_SYNCHRONIZE o CompletionContext poderá ou não ser NULL. Para qualquer outra FLT_PREOP_CALLBACK_STATUS valor retornado, o CompletionContext deve ser NULL. O CompletionContext é um estado definido por filtro que é passado do retorno de chamada de pré-operação do filtro para a função de retorno de chamada pós-operação correspondente (PFLT_POST_OPERATION_CALLBACK). O retorno de chamada pós-operação só será chamado se o filtro retornado FLT_PREOP_SUCCESS_WITH_CALLBACK ou FLT_PREOP_SYNCHRONIZE de sua função de retorno de chamada de pré-operação. Se o filtro não passar nenhum estado de sua função de retorno de chamada de pré-operação para sua função de retorno de chamada pós-operação, CompletionContext será NULL e, portanto, CompletionContext em sua função de retorno de chamada pós-operação será NULL. Cada filtro individual decide se deseja retornar o estado em CompletionContext de uma função de retorno de chamada de pré-operação, portanto, cabe a cada filtro individual saber se ele deve ou não examinar CompletionContext em sua função de retorno de chamada pós-operação.

Exemplo

O exemplo a seguir mostra o protótipo de função de uma função PFLT_PRE_OPERATION_CALLBACK chamada SwapPreReadBuffers. O parâmetro CompletionContext recebe o contexto que será passado para a função de retorno de chamada pós-operação e é declarado com _Flt_CompletionContext_Outptr_ anotação.

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

A anotação _Flt_CompletionContext_Outptr_ é definida em specstrings.h. O uso da anotação pode adicionar uma verificação de erro valiosa sem adicionar sobrecarga ou complexidade ao código.

PFLT_PRE_OPERATION_CALLBACK

PFLT_POST_OPERATION_CALLBACK

Anotações de SAL 2.0 para drivers do Windows