Obtención de contextos
Una vez que un controlador de minifiltro ha establecido un contexto para un objeto, puede obtener el contexto llamando a una de las siguientes rutinas get:
- FltGetContexts
- FltGetContextsEx
- FltGetFileContext
- FltGetInstanceContext
- FltGetStreamContext
- FltGetStreamHandleContext
- FltGetTransactionContext
- FltGetVolumeContext
Cada rutina get correcta incrementa el recuento de referencias en el contexto, lo que requiere que el minifiltro llame a FltReleaseContext cuando ya no necesite el puntero de contexto.
En el ejemplo de código siguiente, tomado del minifiltro de ejemplo SwapBuffers, el controlador de minifiltro llama a FltGetVolumeContext para obtener un contexto de volumen:
status = FltGetVolumeContext(
FltObjects->Filter, //Filter
FltObjects->Volume, //Volume
&volCtx); //Context
...
if (volCtx != NULL) {
FltReleaseContext(volCtx);
}
Si la llamada a FltGetVolumeContext es correcta, el parámetro Context recibe la dirección del contexto de volumen del autor de la llamada. FltGetVolumeContext incrementa el recuento de referencias en el puntero Context . Por lo tanto, cuando este puntero ya no es necesario, el controlador de minifiltro debe liberarlo llamando a FltReleaseContext.