WMIREGGUIDW 结构 (wmistr.h)
WMIREGGUID 结构包含数据块或事件块的新注册或更新的注册信息。
语法
typedef struct {
GUID Guid;
ULONG Flags;
ULONG InstanceCount;
union {
ULONG InstanceNameList;
ULONG BaseNameOffset;
ULONG_PTR Pdo;
ULONG_PTR InstanceInfo;
} DUMMYUNIONNAME;
} WMIREGGUIDW, *PWMIREGGUIDW;
成员
Guid
指定表示要注册或更新的块的 GUID。
Flags
指示要注册或更新的块的特征。
如果使用静态实例名称注册块,驱动程序将设置以下标志之一:
WMIREG_FLAG_INSTANCE_LIST
指示驱动程序在 IrpStack-Parameters.WMI.Buffer> 的缓冲区中遵循 WMIREGINFO 结构的静态列表中为此块提供静态实例名称。 如果设置了此标志,则 InstanceNameList 是从包含此 WMIREGGUID 的 WMIREGINFO 结构开头到一系列连续的 InstanceCount 计数 Unicode 字符串的偏移量(以字节为单位)。
WMIREG_FLAG_INSTANCE_BASENAME
请求 WMI 根据 IrpStack-Parameters.WMI.Buffer> 缓冲区中的 WMIREGINFO 结构中的驱动程序提供的基名称生成静态实例名称。 WMI 通过将计数器追加到基名称来生成实例名称。 如果设置了此标志,则 BaseNameOffset 是从包含此 WMIREGGUID 的 WMIREGINFO 结构开头到用作基名称的单个计数 Unicode 字符串的偏移量(以字节为单位)。
WMIREG_FLAG_INSTANCE_PDO
请求 WMI 从 PDO 的设备实例 ID 生成静态实例名称。 如果设置了此标志, InstanceInfo 将指向传递给驱动程序的 AddDevice 例程的 PDO。 WMI 从 PDO 的设备实例路径生成实例名称。 使用设备实例路径作为静态实例名称的基础是有效的,因为此类名称保证是唯一的。 WMI 自动为实例提供一个“友好”名称,作为数据块中的项,数据使用者可以查询该名称。
如果使用动态实例名称注册块,则必须清除WMIREG_FLAG_INSTANCE_LIST、WMIREG_FLAG_INSTANCE_BASENAME和WMIREG_FLAG_INSTANCE_PDO。
驱动程序还可以设置以下一个或多个标志:
WMIREG_FLAG_EVENT_ONLY_GUID
块只能作为事件启用或禁用,不能查询或设置。 如果此标志是明确的,则还可以查询或设置块。
WMIREG_FLAG_EXPENSIVE
请求 WMI 在数据使用者首次打开数据块时发送 IRP_MN_ENABLE_COLLECTION 请求,并在最后一个数据使用者关闭数据块时 发送IRP_MN_DISABLE_COLLECTION 请求。 如果收集此类数据会影响性能,建议执行此操作,因为驱动程序不需要收集数据,直到数据使用者通过打开块显式请求数据。
WMIREG_FLAG_REMOVE_GUID
请求 WMI 删除对此块的支持。 此标志仅在响应将 Parameters.WMI.DataPath 设置为 WMIUPDATE ) 的情况下更新注册信息 (IRP_MN_REGINFO或IRP_MN_REGINFO_EX的请求时有效。
WMIREG_FLAG_TRACED_GUID
块只能写入日志文件,并且只能通过 evntrace.h 中声明的用户模式例程进行访问。 只有 NT 内核模式数据提供程序设置此标志。
WMIREG_FLAG_TRACE_CONTROL_GUID
GUID 充当控制 GUID,用于在 MOF 文件中启用或禁用与其关联的跟踪 GUID。 仅当同时设置了WMIREG_FLAG_TRACED_GUID时,此标志才有效。 只有 NT 内核模式数据提供程序设置此标志。
InstanceCount
指定要为此块定义的静态实例名称数。 如果块是使用动态实例名称注册的,WMI 将忽略 InstanceCount。
DUMMYUNIONNAME
DUMMYUNIONNAME.InstanceNameList
指示从包含此 WMIREGGUID 的 WMIREGINFO 结构的开头到连续的 InstanceCount 计数 Unicode 字符串系列的偏移量(以字节为单位)。 仅当在 Flags 中设置了WMIREG_FLAG_INSTANCE_LIST时,此成员才有效。 如果块是使用动态实例名称注册的,则 WMI 将忽略 InstanceNameList。
DUMMYUNIONNAME.BaseNameOffset
指示从包含此 WMIREGGUID 的 WMIREGINFO 结构的开头到作为 WMI 生成静态实例名称的基数的单个计数 Unicode 字符串的偏移量(以字节为单位)。 仅当在 Flags 中设置了WMIREG_FLAG_INSTANCE_BASENAME时,此成员才有效。 如果块是使用动态实例名称注册的,则 WMI 将忽略 BaseNameOffset。
DUMMYUNIONNAME.Pdo
指向物理设备对象的指针 (PDO) 传递给驱动程序的 AddDevice 例程。 WMI 使用此 PDO 的设备实例路径作为生成静态实例名称的基础。 仅当在 Flags 中设置了WMIREG_FLAG_INSTANCE_PDO时,此成员才有效。 如果块是使用动态实例名称注册的,则 WMI 将忽略 Pdo。
DUMMYUNIONNAME.InstanceInfo
保留供 WMI 使用。
注解
驱动程序生成一个或多个 WMIREGGUID 结构,以响应注册或更新其块 IRP_MN_REGINFO 或 IRP_MN_REGINFO_EX 请求。 驱动程序在 WMIREGINFO 结构的 WmiRegGuid 成员处传递此类结构的数组,驱动程序会将该数组写入 IrpStack-Parameters.WMI.Buffer> 的缓冲区。
驱动程序可以使用静态或动态实例名称注册或更新块。 静态实例名称提供最佳性能;但是,如果实例数或实例名称频繁更改,动态实例名称是数据块的首选。 有关实例名称的详细信息,请参阅 定义 WMI 实例名称。
要求
要求 | 值 |
---|---|
Header | wmistr.h (包括 Wmistr.h) |