获取上下文
一旦微筛选器驱动程序 为对象设置了上下文 ,它就可以通过调用以下 get 例程之一来获取上下文:
- 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 来释放它。