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


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

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

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

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

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

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