REG_CREATE_KEY_INFORMATION_V1 结构 (wdm.h)
REG_CREATE_KEY_INFORMATION_V1 结构包含筛选器驱动程序的 RegistryCallback 例程在创建注册表项时可以使用的信息。
语法
typedef struct _REG_CREATE_KEY_INFORMATION_V1 {
PUNICODE_STRING CompleteName;
PVOID RootObject;
PVOID ObjectType;
ULONG Options;
PUNICODE_STRING Class;
PVOID SecurityDescriptor;
PVOID SecurityQualityOfService;
ACCESS_MASK DesiredAccess;
ACCESS_MASK GrantedAccess;
PULONG Disposition;
PVOID *ResultObject;
PVOID CallContext;
PVOID RootObjectContext;
PVOID Transaction;
ULONG_PTR Version;
PUNICODE_STRING RemainingName;
ULONG Wow64Flags;
ULONG Attributes;
KPROCESSOR_MODE CheckAccessMode;
} REG_CREATE_KEY_INFORMATION_V1, REG_OPEN_KEY_INFORMATION_V1, *PREG_CREATE_KEY_INFORMATION_V1, *PREG_OPEN_KEY_INFORMATION_V1;
成员
CompleteName
指向包含新注册表项路径 的UNICODE_STRING 结构的指针。 路径可以是绝对的,也可以是相对的。 如果路径为绝对路径,则此结构包含以“\”字符开头的完全限定路径。 对于绝对路径, RootObject 成员指定 \REGISTRY 键,它是注册表树的根目录。 如果路径是相对路径,则路径以“\”以外的字符开头,并且相对于 RootObject 成员指定的键。
RootObject
指向注册表项对象的指针,该对象表示 CompleteName 成员指定的路径的根注册表项。
ObjectType
此成员保留供操作系统使用。 驱动程序不得访问此成员。
Options
指定用于创建或打开新密钥的键创建例程的选项。 有关详细信息,请参阅 ZwCreateKey 例程的 CreateOptions 参数的说明和 ZwOpenKeyEx 例程的 OpenOptions 参数的说明。
Class
指向 UNICODE_STRING 结构的指针,该结构标识新键的对象类。 有关此成员的详细信息,请参阅 ZwCreateKey 例程的 Class 参数。 此指针值可以为 NULL。
SecurityDescriptor
指向包含密钥对象安全信息的 SECURITY_DESCRIPTOR 结构的指针。 此指针是从 OBJECT_ATTRIBUTES 结构的 SecurityDescriptor 成员获取的,该成员在创建新注册表项的调用中作为输入参数传递。
SecurityQualityOfService
指向 SECURITY_QUALITY_OF_SERVICE 结构的指针。 此结构指示服务器是否可以模拟尝试创建注册表项的客户端,如果允许模拟,则表示允许它的范围。
DesiredAccess
尝试创建注册表项的线程指定的访问掩码。 有关此访问掩码的详细信息,请参阅 ZwCreateKey 例程的 DesiredAccess 参数的说明。
GrantedAccess
一个访问掩码,指示授予尝试创建注册表项的线程的访问权限。 有关此成员的详细信息,请参阅以下“备注”部分。
Disposition
一个 值,该值指示请求的注册表操作是创建新项还是打开现有项。 有关此成员的详细信息,请参阅 ZwCreateKey 例程的 Disposition 参数的说明和以下备注部分。
ResultObject
指向位置的指针,该位置接收表示所创建的注册表项的密钥对象的地址。
CallContext
驱动程序的 RegistryCallback 例程可以提供的可选驱动程序定义的上下文信息。
RootObjectContext
指向驱动程序定义的上下文信息的指针,驱动程序通过调用 CmSetCallbackObjectContext 例程与注册表对象的路径根相关联。
Transaction
指向注册表操作的事务对象的指针。 可以提供指向 ObOpenObjectByPointer 例程的此指针,以获取相应的事务句柄。 如果此成员为 NULL,则操作是在非事务上下文中执行的。
Version
结构版本号。 此成员将 Windows Vista 中的 REG_CREATE_KEY_INFORMATION 结构与 Windows 7 及更高版本中的 REG_CREATE_KEY_INFORMATION_V1 结构区分开来。 当前定义了以下版本号。
版本号 | 结构版本 |
---|---|
0 | REG_CREATE_KEY_INFORMATION |
1 | REG_CREATE_KEY_INFORMATION_V1 |
此结构的未来版本可能会添加新成员,但不会更改结构现有版本中已定义的成员。 此成员在 Windows 7 及更高版本的 Windows 操作系统中支持的 REG_CREATE_KEY_INFORMATION_V1 结构中定义。 在 Windows Vista 支持的 REG_CREATE_KEY_INFORMATION 结构中,此成员名为 “保留” ,并设置为零。 筛选器驱动程序应依赖版本号而不是操作系统版本来确定它们所使用的结构版本。
RemainingName
指向包含新注册表项相对路径 的UNICODE_STRING 结构的指针。 此成员始终表示新键的路径,相对于 RootObject 成员指定的键的路径。 相比之下,如果 RootObject 成员指定了 \REGISTRY 键,则 CompleteName 成员可以包含绝对路径。
Wow64Flags
包含访问掩码中的 Wow64 标志,这些标志在调用中作为输入参数传递,以创建新的注册表项。 此成员指示在 64 位版本的 Windows 上运行的 32 位客户端程序是否正在尝试创建注册表项。 此成员设置为零或设置为以下标志位之一:
- KEY_WOW64_32KEY
- KEY_WOW64_64KEY
Attributes
包含来自 OBJECT_ATTRIBUTES 结构的 Attributes 成员的对象-特性标志,这些标志在调用中作为输入参数传递,以创建新的注册表项。 此成员可能包含以下一个或多个标志位:
- OBJ_KERNEL_HANDLE
- OBJ_FORCE_ACCESS_CHECK
- OBJ_OPENLINK
CheckAccessMode
指示配置管理器如何执行安全访问检查调用以创建新密钥。 此成员包含 Wdm.h 头文件中的以下 MODE 枚举值之一:
- KernelMode
- UserMode
注解
每当线程尝试创建密钥时,配置管理器都会将此结构传递给 RegistryCallback 例程,例如,当用户模式线程调用 RegCreateKey 或 RegCreateKeyEx 时,或者当内核模式驱动程序调用 ZwCreateKey 时。
此结构是 Windows Vista 支持的 REG_CREATE_KEY_INFORMATION 结构的扩展版本。 前 14 个成员 (CompleteName 到 Transaction)在这两个结构中是相同的。 REG_CREATE_KEY_INFORMATION_V1结构的最后五个成员(通过CheckAccessMode 的版本)不属于REG_CREATE_KEY_INFORMATION结构。
如果驱动程序的 RegistryCallback 例程返回 RegNtPreCreateKeyEx 通知STATUS_CALLBACK_BYPASS,则驱动程序必须提供 GrantedAccess、 Disposition 和 ResultObject 成员的值。
REG_CREATE_KEY_INFORMATION_V1 结构是筛选器驱动程序可通过其 RegistryCallback 例程接收的众多结构之一。 有关注册表筛选操作的详细信息,请参阅 筛选注册表调用。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 适用于 Windows 7 及更高版本的 Windows 操作系统。 |
标头 | wdm.h(包括 Wdm.h、Ntddk.h、Ntifs.h) |