Функция 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.
См. также раздел
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по