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,则忽略 SizePoolTag 成员。

ContextFreeCallback

指向 PFLT_CONTEXT_FREE_CALLBACK类型的 minifilter 定义 ContextFreeCallback 例程的指针。 此成员是可选的,可以 NULL。 如果未 NULL,则忽略 SizePoolTag 成员。

Reserved1

保留供系统使用。 微型筛选器必须将此成员设置为 NULL

言论

当微型筛选器从其 DriverEntry 例程调用 FltRegisterFilter 时,它必须注册它使用的每个上下文类型。

为了注册这些上下文类型,微型筛选器将创建FLT_CONTEXT_REGISTRATION结构的可变长度数组,并将指向数组的指针存储在 ContextRegistrationFLT_REGISTRATION 结构的成员中,微型筛选器作为 FltRegisterFilterRegistration 参数传递。 此数组的最后一个元素必须是 {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)

另请参阅

FLT_REGISTRATION

FltRegisterFilter

PFLT_CONTEXT_ALLOCATE_CALLBACK

PFLT_CONTEXT_CLEANUP_CALLBACK

PFLT_CONTEXT_FREE_CALLBACK