Share via


Devolución de llamada del minifiltro del sistema de archivos _Flt_CompletionContext_Outptr_ anotación

Use la anotación _Flt_CompletionContext_Outptr_ al declarar la función de devolución de llamada de minifiltro del sistema de archivos PFLT_PRE_OPERATION_CALLBACK. Coloque esta anotación en el parámetro CompletionContext . Esta anotación dirige la herramienta de análisis de código para comprobar que CompletionContext es correcto para el valor devuelto FLT_PREOP_CALLBACK_STATUS.

Si una función de devolución de llamada anterior a la operación (PFLT_PRE_OPERATION_CALLBACK) devuelve FLT_PREOP_SUCCESS_WITH_CALLBACK o FLT_PREOP_SYNCHRONIZE la propiedad CompletionContext podría ser o no NULL. Para cualquier otro FLT_PREOP_CALLBACK_STATUS valor devuelto, CompletionContext debe ser NULL. CompletionContext es el estado definido por el filtro que se pasa desde la devolución de llamada de la operación previa del filtro a la función de devolución de llamada posterior a la operación (PFLT_POST_OPERATION_CALLBACK). La devolución de llamada posterior a la operación solo se llama si el filtro devolvió FLT_PREOP_SUCCESS_WITH_CALLBACK o FLT_PREOP_SYNCHRONIZE de su función de devolución de llamada previa a la operación. Si el filtro no pasa ningún estado de su función de devolución de llamada previa a la operación a su función de devolución de llamada posterior a la operación, CompletionContext es NULL y, por lo tanto , CompletionContext en su función de devolución de llamada posterior a la operación será NULL. Cada filtro individual decide si se va a devolver el estado de CompletionContext desde una función de devolución de llamada previa a la operación, por lo que cada filtro individual debe saber si debe examinar CompletionContext en su función de devolución de llamada posterior a la operación.

Ejemplo

En el ejemplo siguiente se muestra el prototipo de función para una función de PFLT_PRE_OPERATION_CALLBACK denominada SwapPreReadBuffers. El parámetro CompletionContext recibe el contexto que se pasará a la función de devolución de llamada posterior a la operación y se declara con _Flt_CompletionContext_Outptr_ anotación.

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

La anotación _Flt_CompletionContext_Outptr_ se define en specstrings.h. El uso de la anotación puede agregar una comprobación de errores valiosa sin agregar sobrecarga ni complejidad al código.

PFLT_PRE_OPERATION_CALLBACK

PFLT_POST_OPERATION_CALLBACK

Anotaciones SAL 2.0 para controladores de Windows