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 列表中的上下文大小大于或等于所请求的大小)。 否则,仅当 lookaside 列表中的上下文大小等于所请求的大小时,筛选器管理器才会从 lookaside 列表中分配上下文。 |
ContextCleanupCallback
指向类型为 PFLT_CONTEXT_CLEANUP_CALLBACK的 minifilter 定义的 ContextCleanupCallback 例程的指针。 筛选器管理器在删除上下文之前立即调用此例程。 如果微型筛选器没有内存或指针在上下文中清理,则此成员是可选的,并且可以 NULL。
Size
如果迷你筛选器使用固定大小上下文,则上下文中定义的微筛选器部分的大小(以字节为单位)。 零是有效的大小值。 如果微型筛选器使用可变大小上下文,则需要此成员,并且必须设置为FLT_VARIABLE_SIZED_CONTEXTS。
PoolTag
要用于上下文的池标记值。 此标记被指定为 1 到 4 个 7 位 ASCII 字符的字符串,出现在发生系统的任何故障转储中。 如果 ContextAllocateCallback 成员 NULL,则此成员是必需的,并且不能为零。
ContextAllocateCallback
指向类型为 PFLT_CONTEXT_ALLOCATE_CALLBACK的 minifilter 定义的 ContextAllocateCallback 例程的指针。 此成员是可选的,可以 NULL。 如果未 NULL,则忽略 Size 和 PoolTag 成员。
ContextFreeCallback
指向 PFLT_CONTEXT_FREE_CALLBACK类型的 minifilter 定义 ContextFreeCallback 例程的指针。 此成员是可选的,可以 NULL。 如果未 NULL,则忽略 Size 和 PoolTag 成员。
Reserved1
保留供系统使用。 微型筛选器必须将此成员设置为 NULL。
言论
当微型筛选器从其 DriverEntry 例程调用 FltRegisterFilter 时,它必须注册它使用的每个上下文类型。
为了注册这些上下文类型,微型筛选器将创建FLT_CONTEXT_REGISTRATION结构的可变长度数组,并将指向数组的指针存储在 ContextRegistrationFLT_REGISTRATION 结构的成员中,微型筛选器作为 FltRegisterFilter的 Registration 参数传递。 此数组的最后一个元素必须是 {FLT_CONTEXT_END}。
对于微型筛选器使用的每个上下文类型,微型筛选器必须提供至少一个FLT_CONTEXT_REGISTRATION结构,根据以下规则:
- 如果微筛选器提供具有非NULL ContextAllocateCallback 成员的FLT_CONTEXT_REGISTRATION结构,则它无法为该上下文类型提供任何其他FLT_CONTEXT_REGISTRATION结构。
- 如果微型筛选器提供两个或更多相同的FLT_CONTEXT_REGISTRATION结构,则只会使用第一个结构。 其他人将被忽略。
- 每个上下文类型只能提供一个 大小 成员FLT_VARIABLE_SIZED_CONTEXTS的FLT_CONTEXT_REGISTRATION结构。
- 为每个上下文类型提供 大小 成员 FLT_VARIABLE_SIZED_CONTEXTS以外的三个FLT_CONTEXT_REGISTRATION结构。
要求
要求 | 价值 |
---|---|
标头 | fltkernel.h (包括 Fltkernel.h) |