Поделиться через


Получение контекстов

После установки контекста для объекта драйвер минифильтра он может получить контекст, вызвав одну из следующих процедур получения:

Каждое успешное получение подпрограммы увеличивает количество ссылок в контексте, требуя, чтобы мини-фильтр вызывал FltReleaseContext , когда он больше не нуждается в указателе контекста.

В следующем примере кода, взятом из примера минифильтра SwapBuffers, драйвер минифильтра вызывает FltGetVolumeContext для получения контекста тома:

status = FltGetVolumeContext(
 FltObjects->Filter,    //Filter
 FltObjects->Volume,    //Volume
                &volCtx);              //Context
...
if (volCtx != NULL) {
 FltReleaseContext(volCtx);
}

Если вызов FltGetVolumeContext выполнен успешно, параметр Context получает адрес контекста тома вызывающего объекта. FltGetVolumeContext увеличивает число ссылок на указатель контекста . Таким образом, если этот указатель больше не нужен, драйвер минифильтра должен освободить его, вызвав FltReleaseContext.