Recupero di contesti
Dopo aver impostato un contesto per un oggetto, un driver minifilter può ottenere il contesto chiamando una delle routine di recupero seguenti:
- FltGetContexts
- FltGetContextsEx
- FltGetFileContext
- FltGetInstanceContext
- FltGetStreamContext
- FltGetStreamHandleContext
- FltGetTransactionContext
- FltGetVolumeContext
Ogni operazione riuscita incrementa il conteggio dei riferimenti nel contesto, richiedendo che il minifilter chiama FltReleaseContext quando non ha più bisogno del puntatore del contesto.
Nell'esempio di codice seguente, tratto dal minifiltro di esempio SwapBuffers, il driver minifilter chiama FltGetVolumeContext per ottenere un contesto di volume:
status = FltGetVolumeContext(
FltObjects->Filter, //Filter
FltObjects->Volume, //Volume
&volCtx); //Context
...
if (volCtx != NULL) {
FltReleaseContext(volCtx);
}
Se la chiamata a FltGetVolumeContext ha esito positivo, il parametro Context riceve l'indirizzo del contesto del volume del chiamante. FltGetVolumeContext incrementa il conteggio dei riferimenti nel puntatore contesto . Pertanto, quando questo puntatore non è più necessario, il driver minifilter deve rilasciarlo chiamando FltReleaseContext.