Obtendo contextos
Depois que um driver de minifiltro tiver definido um contexto para um objeto , ele poderá obter o contexto chamando uma das seguintes rotinas get:
- FltGetContexts
- FltGetContextsEx
- FltGetFileContext
- FltGetInstanceContext
- FltGetStreamContext
- FltGetStreamHandleContext
- FltGetTransactionContext
- FltGetVolumeContext
Cada rotina get bem-sucedida incrementa a contagem de referência no contexto, exigindo que o minifiltro chame FltReleaseContext quando não precisar mais do ponteiro de contexto.
No exemplo de código a seguir, obtido do minifiltro de exemplo SwapBuffers, o driver de minifiltro chama FltGetVolumeContext para obter um contexto de volume:
status = FltGetVolumeContext(
FltObjects->Filter, //Filter
FltObjects->Volume, //Volume
&volCtx); //Context
...
if (volCtx != NULL) {
FltReleaseContext(volCtx);
}
Se a chamada para FltGetVolumeContext for bem-sucedida, o parâmetro Context receberá o endereço do contexto de volume do chamador. FltGetVolumeContext incrementa a contagem de referência no ponteiro Context . Portanto, quando esse ponteiro não for mais necessário, o driver de minifiltro deverá liberá-lo chamando FltReleaseContext.