Получение контекстов
После того как драйвер минифильтра задал контекст для объекта, он может получить контекст, вызвав одну из следующих процедур получения:
- FltGetContexts
- FltGetContextsEx
- FltGetFileContext
- FltGetInstanceContext
- FltGetStreamContext
- FltGetStreamHandleContext
- FltGetTransactionContext
- FltGetVolumeContext
Каждая успешная подпрограмма получения увеличивает количество ссылок в контексте, требуя, чтобы минифильтр вызывал FltReleaseContext , когда ему больше не нужен указатель контекста.
В следующем примере кода, взятом из примера минифильтра SwapBuffers, драйвер минифильтра вызывает FltGetVolumeContext для получения контекста тома:
status = FltGetVolumeContext(
FltObjects->Filter, //Filter
FltObjects->Volume, //Volume
&volCtx); //Context
...
if (volCtx != NULL) {
FltReleaseContext(volCtx);
}
Если вызов FltGetVolumeContext выполнен успешно, параметр Context получает адрес контекста тома вызывающего объекта. FltGetVolumeContext увеличивает количество ссылок в указателе контекста . Таким образом, если этот указатель больше не нужен, драйвер минифильтра должен освободить его, вызвав FltReleaseContext.