Поделиться через


Структура 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

Указывает, что драйвер предоставляет статические имена экземпляров для этого блока в статическом списке, следующем за структурой WMIREGINFO в буфере в IrpStack-Parameters.WMI.Buffer>. Если этот флаг установлен, InstanceNameList — это смещение в байтах от начала структуры WMIREGINFO , содержащей этот WMIREGGUID , до непрерывного ряда строк InstanceCount , подсчитываемых в Юникоде.

WMIREG_FLAG_INSTANCE_BASENAME

Запрашивает WMI для создания статических имен экземпляров из базового имени, предоставленного драйвером, следующего за структурой WMIREGINFO в буфере по адресу IrpStack-Parameters.WMI.Buffer>. WMI создает имена экземпляров путем добавления счетчика к базовому имени. Если этот флаг установлен, BaseNameOffset — это смещение в байтах от начала структуры WMIREGINFO , содержащей этот WMIREGGUID , до одной подсчитываемой строки Юникода, которая служит базовым именем.

WMIREG_FLAG_INSTANCE_PDO

Запрашивает WMI для создания статических имен экземпляров из идентификатора экземпляра устройства для PDO. Если этот флаг установлен, InstanceInfo указывает на PDO, переданный в подпрограмму AddDevice драйвера. 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_EX с параметром Parameters.WMI.DataPath с параметром WMIUPDATE).

WMIREG_FLAG_TRACED_GUID

Блок может быть записан только в файл журнала и доступен только через подпрограммы пользовательского режима, объявленные в evntrace.h. Только поставщики данных в режиме ядра NT устанавливают этот флаг.

WMIREG_FLAG_TRACE_CONTROL_GUID

GUID выступает в качестве GUID элемента управления для включения или отключения идентификаторов GUID трассировки, связанных с ним в MOF-файле. Этот флаг действителен, только если также задан WMIREG_FLAG_TRACED_GUID. Только поставщики данных в режиме ядра NT устанавливают этот флаг.

InstanceCount

Указывает количество имен статических экземпляров, определяемых для этого блока. Если блок регистрируется с динамическими именами экземпляров, WMI игнорирует InstanceCount.

DUMMYUNIONNAME

DUMMYUNIONNAME.InstanceNameList

Указывает смещение в байтах от начала структуры WMIREGINFO , содержащей этот WMIREGGUID , до непрерывного ряда подсчитываемых строк Юникода InstanceCount . Этот элемент действителен, только если WMIREG_FLAG_INSTANCE_LIST задано в разделе Флаги. Если блок регистрируется с динамическими именами экземпляров, WMI игнорирует InstanceNameList.

DUMMYUNIONNAME.BaseNameOffset

Указывает смещение в байтах от начала структуры WMIREGINFO , содержащей этот WMIREGGUID , до одной подсчитываемой строки Юникода, которая служит основой для WMI для создания имен статических экземпляров. Этот элемент действителен, только если WMIREG_FLAG_INSTANCE_BASENAME задано в разделе Флаги. Если блок регистрируется с динамическими именами экземпляров, WMI игнорирует BaseNameOffset.

DUMMYUNIONNAME.Pdo

Указатель на объект физического устройства (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)

См. также раздел

IRP_MN_REGINFO

IRP_MN_REGINFO_EX

WMIREGINFO