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


Функция PutInstanceWmi

Создает или обновляет экземпляр существующего класса. Экземпляр записывается в репозиторий WMI.

Примечание

Этот интерфейс API предназначен только для внутреннего использования. Он не предназначен для использования из кода разработчика.

Синтаксис

HRESULT PutInstanceWmi (
   [in] IWbemClassObject*    pInst,
   [in] long                 lFlags,
   [in] IWbemContext*        pCtx,
   [out] IWbemCallResult**   ppCallResult
);

Параметры

pInst
[in] Указатель на записываемый экземпляр.

lFlags
[in] Сочетание флагов, влияющих на поведение этой функции. Следующие значения определяются в файле заголовка WbemCli.h , или их можно определить как константы в коде:

Константа Значение Описание
WBEM_FLAG_USE_AMENDED_QUALIFIERS 0x20000 Если этот параметр задан, инструментарий WMI не сохраняет квалификаторы с измененным вкусом .
Если значение не задано, предполагается, что этот объект не локализован и все квалификаторы хранятся вместе с этим экземпляром.
WBEM_FLAG_CREATE_OR_UPDATE 0 Создайте экземпляр , если он не существует, или перезапишите его, если он уже существует.
WBEM_FLAG_UPDATE_ONLY 1 Обновите экземпляр . Экземпляр должен существовать, чтобы вызов был успешным.
WBEM_FLAG_CREATE_ONLY 2 Создайте экземпляр. Вызов завершается ошибкой, если экземпляр уже существует.
WBEM_FLAG_RETURN_IMMEDIATELY 0x10 Флаг вызывает полусинхронный вызов.

pCtx
[in] Как правило, это значение равно null. В противном случае это указатель на экземпляр IWbemContext , который может использоваться поставщиком, предоставляющим запрошенные классы.

ppCallResult
[out] Если nullзадано значение , этот параметр не используется. Если lFlags содержит WBEM_FLAG_RETURN_IMMEDIATELY, функция немедленно возвращает с WBEM_S_NO_ERROR. Параметр ppCallResult получает указатель на новый объект IWbemCallResult .

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

Следующие значения, возвращаемые этой функцией, определяются в файле заголовка WbemCli.h , или их можно определить как константы в коде:

Константа Значение Описание
WBEM_E_ACCESS_DENIED 0x80041003 Пользователь не имеет разрешения на обновление экземпляра указанного класса.
WBEM_E_FAILED 0x80041001 Возникла неопределенная ошибка.
WBEM_E_INVALID_CLASS 0x80041010 Недопустимый класс, поддерживающий этот экземпляр.
WBEM_E_ILLEGAL_NULL 0x80041028 для null свойства, которое не может иметь nullзначение , например для свойства, помеченного индексируемым или Not_Null квалификатором.
WBEM_E_INVALID_OBJECT 0x8004100f Задан недопустимый экземпляр. (Например, вызов PutInstanceWmi с помощью класса возвращает это значение.)
WBEM_E_INVALID_PARAMETER 0x80041008 Недействительный параметр.
WBEM_E_ALREADY_EXISTS 0x80041019 Флаг WBEM_FLAG_CREATE_ONLY был указан, но экземпляр уже существует.
WBEM_E_NOT_FOUND 0x80041002 WBEM_FLAG_UPDATE_ONLY был указан в lFlagsпараметре , но экземпляр не существует.
WBEM_E_OUT_OF_MEMORY 0x80041006 Недостаточно памяти для выполнения операции.
WBEM_E_SHUTTING_DOWN 0x80041033 Вероятно, инструментарий WMI был остановлен и перезапущен. Снова вызовите ConnectServerWmi .
WBEM_E_TRANSPORT_FAILURE 0x80041015 Сбой связи удаленного вызова процедуры (RPC) между текущим процессом и WMI.
WBEM_S_NO_ERROR 0 Вызов функции выполнен успешно.

Комментарии

Эта функция заключает в оболочку вызов метода IWbemServices::P utInstance .

Функция PutInstanceWmi поддерживает создание экземпляров и обновление экземпляров только существующих классов. В зависимости от того pCtx , как задан параметр, обновляются некоторые или все свойства экземпляра.

Если экземпляр, на который указывает , pInst принадлежит к подклассу, управление Windows вызывает всех поставщиков, ответственных за классы, от которых наследуется подкласс. Для успешного выполнения исходного PutInstanceWmi запроса все эти поставщики должны быть успешно выполнены. Первым вызывается поставщик, поддерживающий самый верхний класс в иерархии. Порядок вызовов продолжается с подклассом верхнего класса и продолжается сверху вниз, пока управление Windows не достигнет поставщика для класса, владеющего экземпляром pInst, на который указывает . Управление Windows не вызывает поставщиков ни для одного из дочерних классов экземпляра.

Когда приложению необходимо обновить экземпляр, принадлежащий иерархии классов, pInst параметр должен указывать на экземпляр, содержащий свойства, которые необходимо изменить. То есть рассмотрим целевой экземпляр, принадлежащий классуB. Экземпляр ClassB является производным от ClassA, а Класс А определяет свойство PropA. Если приложение хочет изменить значение PropA в экземпляре ClassB , оно должно присвоить значение pInst данному экземпляру, а не экземпляру Класса А.

Вызов PutInstanceWmi для экземпляра абстрактного класса не допускается.

Если вызов функции завершается ошибкой, можно получить дополнительные сведения об ошибке, вызвав функцию GetErrorInfo .

Требования

Платформы: см. раздел Требования к системе.

Заголовка: WMINet_Utils.idl

версии платформа .NET Framework: доступно с версии 4.7.2.

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