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


Функция IoWMIQuerySingleInstanceMultiple (wdm.h)

Подпрограмма IoWMIQuerySingleInstanceMultiple возвращает все экземпляры блока данных WMI, реализующие указанные классы WMI с указанными именами экземпляров.

Синтаксис

NTSTATUS IoWMIQuerySingleInstanceMultiple(
  [in]            PVOID           *DataBlockObjectList,
  [in]            PUNICODE_STRING InstanceNames,
  [in]            ULONG           ObjectCount,
  [in, out]       PULONG          InOutBufferSize,
  [out, optional] PVOID           OutBuffer
);

Параметры

[in] DataBlockObjectList

Указатель на массив указателей объектов блока данных WMI. Вызывающий объект открывает объект блока данных для каждого класса WMI с помощью подпрограммы IoWMIOpenBlock. Каждый объект должен быть открыт с помощью права доступа WMIGUID_QUERY.

[in] InstanceNames

Указатель на массив UNICODE_STRING структур, содержащих имена экземпляров. Имя экземпляра nв массиве соответствует значению свойства InstanceName для класса WMI nth WMI, указанного в массиве, на который указывает параметр DataBlockObjectList.

[in] ObjectCount

Указывает количество записей в массивах, передаваемых в параметрах DataBlockObjectList и InstanceNames.

[in, out] InOutBufferSize

Указатель на расположение памяти, указывающее размер буфера, переданного в параметре OutBuffer. Если подпрограмма успешно выполнена, она обновляет расположение памяти, чтобы указать количество байтов, фактически хранящихся в OutBuffer. Если подпрограмма завершается сбоем с STATUS_BUFFER_TOO_SMALL, возвращается количество байтов, необходимых для возврата данных.

[out, optional] OutBuffer

Указатель на буфер, в котором подпрограмма возвращает данные WMI. Подпрограмма возвращает последовательность структур WNODE_SINGLE_INSTANCE размера переменной, по одному для каждого экземпляра блока данных. Элемент WnodeHeader.Relationship каждой структуры WNODE_SINGLE_INSTANCE содержит смещение от начала текущего WNODE_SINGLE_INSTANCE до начала следующего WNODE_SINGLE_INSTANCE. Окончательный блок в цепочке имеет WnodeHeader.Linkage равным нулю. Каждый отдельный экземпляр блока данных соответствует одному соответствующему классу WMI и имени экземпляра. OutBuffer должны указывать на буфер, выделенный из непагрегированного пула.

Возвращаемое значение

Подпрограмма возвращает код NTSTATUS. Возможные возвращаемые значения:

Возвращаемый код Описание
STATUS_SUCCESS
Операция завершилась успешно. Подпрограмма возвращает данные WMI в буфере, на который указывает параметр OutBuffer. Подпрограмма также возвращает размер в байтах возвращаемых данных в расположении памяти, на которое указывает параметр InOutBufferSize.
STATUS_BUFFER_TOO_SMALL
Буфер, переданный вызывающим объектом в параметре OutBuffer, слишком мал. Подпрограмма возвращает требуемый размер буфера в расположении памяти, на которое указывает параметр InOutBufferSize.

Замечания

IoWMIQuerySingleInstanceMultiple определяет, какие драйверы могут поддерживать указанные классы WMI и имена экземпляров, а также выдает запрос IRP_MN_QUERY_SINGLE_INSTANCE каждому такому драйверу. Каждый драйвер, экспортируемый экземпляр блока данных с соответствующим свойством instanceName InstanceName, возвращает соответствующие данные.

Если драйверы не реализуют ни один из указанных классов WMI и имен экземпляров, подпрограмма возвращает STATUS_SUCCESS. Он также возвращает значение нуля в расположении памяти, на которое указывает параметр InOutBufferSize.

Чтобы запросить один класс WMI и имя экземпляра, используйте подпрограмму IoWMIQuerySingleInstance. Драйверы могут использовать подпрограмму IoWMISetSingleInstance для обновления экземпляра класса.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Доступно в Windows XP и более поздних версиях операционной системы Windows.
целевая платформа Всеобщий
заголовка wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
библиотеки NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

См. также

IRP_MN_QUERY_SINGLE_INSTANCE

IoWMIOpenBlock

IoWMIQuerySingleInstance

IoWMISetSingleInstance

UNICODE_STRING