Метод Provider::EnumerateInstances (provider.h)

[Класс Provider является частью платформы поставщика WMI, которая в настоящее время рассматривается в окончательном состоянии, и дальнейшие разработки, улучшения или обновления не будут доступны для проблем, не связанных с безопасностью, влияющих на эти библиотеки. API mi mi следует использовать для всех новых разработок.]

Метод EnumerateInstances вызывается WMI для получения всех экземпляров класса поставщика платформы.

Синтаксис

HRESULT EnumerateInstances(
  MethodContext *pMethodContext,
  long          lFlags
);

Параметры

pMethodContext

Указатель на объект контекста для этого вызова. Это значение содержит все свойства IWbemContext, заданные клиентом. Кроме того, этот указатель должен использоваться в качестве параметра для всех вызовов WMI.

lFlags

Битовая маска флагов со сведениями об операции EnumerateInstances . Это значение, указанное клиентом в методе IWbemServices::CreateInstanceEnum .

Следующие флаги обрабатываются (и отфильтровываются) WMI:

  • WBEM_FLAG_DEEP
  • WBEM_FLAG_SHALLOW
  • WBEM_FLAG_RETURN_IMMEDIATELY
  • WBEM_FLAG_FORWARD_ONLY
  • WBEM_FLAG_BIDIRECTIONAL
  • WBEM_FLAG_USE_AMENDED_QUALIFIERS

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

Реализация этого метода поставщиком платформы по умолчанию возвращает WBEM_E_PROVIDER_NOT_CAPABLE вызывающем методу. Метод IWbemServices::CreateInstanceEnum перечисляет наиболее распространенные возвращаемые значения, но вы можете вернуть любой код возврата COM.

Комментарии

Функция EnumerateInstances не возвращает ноль экземпляров путем создания нулевых экземпляров CInstance и задания возвращаемого значения WBEM_S_NO_ERROR.

WMI часто вызывает EnumerateInstances, когда клиентское приложение вызывает IWbemServices::CreateInstanceEnum, хотя WMI может вызывать EnumerateInstances и в других ситуациях. Ниже приведен распространенный способ переопределения EnumerateInstances:

  1. Создайте пустой экземпляр класса с помощью Provider::CreateNewInstance.
  2. Заполните свойства пустого экземпляра с помощью методов Set класса CInstance , таких как CInstance::SetByte или CInstance::SetStringArray.
  3. Отправьте экземпляр обратно клиенту с помощью CInstance::Commit.
Если вы создаете поставщик только метод и не имеет экземпляров или перечисление экземпляров класса вернет слишком много экземпляров, может быть принято решение о поддержке запросов, которые извлекают только определенные экземпляры.

Требования

Требование Значение
Минимальная версия клиента Windows Vista
Минимальная версия сервера Windows Server 2008
Целевая платформа Windows
Header provider.h (включая FwCommon.h)
Библиотека FrameDyn.lib
DLL FrameDynOS.dll; FrameDyn.dll