Структура 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 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 set to 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 WMIREGGU ID до последовательного ряда строк экземпляра , число строк Юникода. Этот элемент действителен, только если WMIREG_FLAG_INSTANCE_LIST задан в Флаги. Если блок регистрируется с динамическими именами экземпляров, WMI игнорирует InstanceNameList.
DUMMYUNIONNAME.BaseNameOffset
Указывает смещение в байтах с начала структуры WMIREGINFO, содержащей эту WMIREGGUID к одной подсчитываемой строке Юникода, которая служит базой для WMI для создания имен статических экземпляров. Этот элемент действителен, только если WMIREG_FLAG_INSTANCE_BASENAME заданы в Флаги. Если блок регистрируется с динамическими именами экземпляров, WMI игнорирует BaseNameOffset.
DUMMYUNIONNAME.Pdo
Указатель на объект физического устройства (PDO), переданный в подпрограмму AddDev ice драйвера. WMI использует путь экземпляра устройства к этому PDO в качестве базы, из которой создаются статические имена экземпляров. Этот элемент действителен, только если WMIREG_FLAG_INSTANCE_PDO задан в Флаги. Если блок регистрируется с динамическими именами экземпляров, WMI игнорирует Pdo.
DUMMYUNIONNAME.InstanceInfo
Зарезервировано для использования WMI.
Замечания
Драйвер создает одну или несколько структур WMIREGGUID в ответ на запрос IRP_MN_REGINFO или IRP_MN_REGINFO_EX на регистрацию или обновление блоков. Драйвер передает массив таких структур в WmiRegGuid член структуры WMIREG INFO, который драйвер записывает в буфер в IrpStack->Parameters.WMI.Buffer.
Драйвер может зарегистрировать или обновить блок со статическими или динамическими именами экземпляров. Имена статических экземпляров обеспечивают лучшую производительность; Однако имена динамических экземпляров предпочтительнее использовать для блоков данных, если число экземпляров или имен экземпляров часто изменяется. Дополнительные сведения об именах экземпляров см. в определении имен экземпляров WMI.
Требования
Требование | Ценность |
---|---|
заголовка | wmistr.h (include Wmistr.h) |