FLT_CONTEXT_REGISTRATION 结构 (fltkernel.h)
FLT_CONTEXT_REGISTRATION 结构用于注册上下文类型。
语法
typedef struct _FLT_CONTEXT_REGISTRATION {
FLT_CONTEXT_TYPE ContextType;
FLT_CONTEXT_REGISTRATION_FLAGS Flags;
PFLT_CONTEXT_CLEANUP_CALLBACK ContextCleanupCallback;
SIZE_T Size;
ULONG PoolTag;
PFLT_CONTEXT_ALLOCATE_CALLBACK ContextAllocateCallback;
PFLT_CONTEXT_FREE_CALLBACK ContextFreeCallback;
PVOID Reserved1;
} FLT_CONTEXT_REGISTRATION, *PFLT_CONTEXT_REGISTRATION;
成员
ContextType
上下文的类型。 此成员是必需的,并且必须是以下值之一:
仅FLT_FILE_CONTEXT (Windows Vista 及更高版本。)
FLT_INSTANCE_CONTEXT
FLT_STREAM_CONTEXT
FLT_STREAMHANDLE_CONTEXT
仅限FLT_SECTION_CONTEXT (Windows 8及更高版本。)
仅FLT_TRANSACTION_CONTEXT (Windows Vista 及更高版本。)
FLT_VOLUME_CONTEXT
Flags
标志的位掩码,指定筛选器管理器如何从固定大小上下文的旁视列表中分配新上下文。 此成员可以是零或以下值。
标志 | 含义 |
---|---|
FLTFL_CONTEXT_REGISTRATION_NO_EXACT_SIZE_MATCH | 如果微筛选器使用固定大小的上下文并且指定了此标志,则筛选器管理器将从旁观列表中的大小大于或等于请求的大小分配一个上下文。 否则,仅当 lookaside 列表中的上下文大小等于请求的大小时,筛选器管理器才会从 lookaside 列表中分配上下文。 |
ContextCleanupCallback
指向PFLT_CONTEXT_CLEANUP_CALLBACK类型的微筛选器定义的 ContextCleanupCallback 例程的指针。 筛选器管理器在删除上下文之前立即调用此例程。 如果微筛选器没有内存或指针在上下文中清理,则此成员是可选的,可以为 NULL。
Size
如果微筛选器使用固定大小的上下文,则为上下文中微筛选器定义部分的大小(以字节为单位)。 零是有效的大小值。 如果微筛选器使用大小可变的上下文,则此成员是必需的,并且必须设置为FLT_VARIABLE_SIZED_CONTEXTS。
PoolTag
要用于上下文的池标记值。 此标记(指定为包含 1 到 4 个 7 位 ASCII 字符的字符串)出现在发生的任何系统故障转储中。 如果 ContextAllocateCallback 成员为 NULL,则此成员是必需的,并且不能为零。
ContextAllocateCallback
指向PFLT_CONTEXT_ALLOCATE_CALLBACK类型的微筛选器定义的 ContextAllocateCallback 例程 的指针。 此成员是可选的,可以为 NULL。 如果它不为 NULL,则忽略 Size 和 PoolTag 成员。
ContextFreeCallback
指向PFLT_CONTEXT_FREE_CALLBACK类型的微筛选器定义的 ContextFreeCallback 例程 的指针。 此成员是可选的,可以为 NULL。 如果它不为 NULL,则忽略 Size 和 PoolTag 成员。
Reserved1
预留给系统使用。 微筛选器必须将此成员设置为 NULL。
注解
当微筛选器从其 DriverEntry 例程调用 FltRegisterFilter 时,它必须注册它使用的每个上下文类型。
为了注册这些上下文类型,微筛选器会创建FLT_CONTEXT_REGISTRATION结构的可变长度数组,并将指向数组的指针存储在微筛选器作为 FltRegisterFilter 的 Registration 参数传递的 FLT_REGISTRATION 结构的 ContextRegistration 成员中。 此数组的最后一个元素必须是 {FLT_CONTEXT_END}。
对于微筛选器使用的每个上下文类型,微筛选器必须根据以下规则提供至少一个FLT_CONTEXT_REGISTRATION结构:
- 如果微筛选器提供具有非 NULL ContextAllocateCallback 成员的FLT_CONTEXT_REGISTRATION结构,则无法为该上下文类型提供任何其他FLT_CONTEXT_REGISTRATION结构。
- 如果微筛选器提供两个或多个相同的FLT_CONTEXT_REGISTRATION结构,则仅使用第一个结构。 其他将被忽略。
- 对于每种上下文类型,只能提供一个 Size 成员为 FLT_VARIABLE_SIZED_CONTEXTS 的 FLT_CONTEXT_REGISTRATION 结构。
- 对于每种上下文类型,不能提供三个具有除 FLT_VARIABLE_SIZED_CONTEXTS 之外的 Size 成员的 FLT_CONTEXT_REGISTRATION 结构。
要求
要求 | 值 |
---|---|
Header | fltkernel.h (包括 Fltkernel.h) |