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 的连续 InstanceCount Unicode 字符串的 结构开头的偏移量(以字节为单位)。
WMIREG_FLAG_INSTANCE_BASENAME
请求 WMI 根据 IrpStack->Parameters.WMI.Buffer的缓冲区中的 WMIREGINFO 结构,从驱动程序提供的基名称生成静态实例名称。 WMI 通过将计数器追加到基名称来生成实例名称。 如果设置了此标志,BaseNameOffset 是 WMIREGINFO 结构开头的偏移量(以字节为单位),该结构包含此 WMIREGGUID 作为基名称的单个计数 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 删除对此块的支持。 此标志仅在响应更新注册信息的请求时有效(IRP_MN_REGINFO 或 IRP_MN_REGINFO_EXParameters.WMI.DataPath 设置为 WMIUPDATE)。
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
指示 WMIREGINFO 结构开头的偏移量(以字节为单位),该结构包含此 WMIREGGUID 到连续的 InstanceCount 计数 Unicode 字符串系列。 仅当 标志中设置WMIREG_FLAG_INSTANCE_LIST时,此成员才有效。 如果块正在向动态实例名称注册,WMI 将忽略 InstanceNameList。
DUMMYUNIONNAME.BaseNameOffset
指示 WMIREGINFO 结构开头的偏移量(以字节为单位),该结构包含此 WMIREGGUID 到单个计数的 Unicode 字符串,该字符串用作 WMI 生成静态实例名称的基础。 仅在 标志中设置WMIREG_FLAG_INSTANCE_BASENAME时,此成员才有效。 如果块正在向动态实例名称注册,WMI 将忽略 BaseNameOffset。
DUMMYUNIONNAME.Pdo
指向传递给驱动程序 AddDevice 例程的物理设备对象的指针。 WMI 使用此 PDO 的设备实例路径作为生成静态实例名称的基础。 仅当在 标志中设置WMIREG_FLAG_INSTANCE_PDO时,此成员才有效。 如果块正在向动态实例名称注册,WMI 将忽略 Pdo。
DUMMYUNIONNAME.InstanceInfo
保留供 WMI 使用。
言论
驱动程序生成一个或多个 WMIREGGUID 结构,以响应注册或更新其块的 IRP_MN_REGINFO 或 IRP_MN_REGINFO_EX 请求。 驱动程序在 WmiRegGuid 成员 WMIREGINFO 结构中传递此类结构的数组,驱动程序在 IrpStack->Parameters.WMI.Buffer写入缓冲区。
驱动程序可以使用静态或动态实例名称注册或更新块。 静态实例名称提供最佳性能;但是,如果实例数或实例名称频繁更改,则数据块首选动态实例名称。 有关实例名称的详细信息,请参阅 定义 WMI 实例名称。
要求
要求 | 价值 |
---|---|
标头 | wmistr.h (包括 Wmistr.h) |