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


Функция PutClassWmi

Создает новый класс или обновляет существующий.

Примечание

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

Синтаксис

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

Параметры

pObject
[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 Флаг вызывает полусинхронный вызов.
WBEM_FLAG_OWNER_UPDATE 0x10000 Поставщики push-уведомлений должны указывать этот флаг при вызове PutClassWmi , чтобы указать, что этот класс изменился.
WBEM_FLAG_UPDATE_COMPATIBLE 0 Позволяет обновлять класс, если нет производных классов и экземпляров этого класса. Кроме того, он позволяет выполнять обновления во всех случаях, если изменение относится только к неважным квалификаторам, таким как квалификатор описания. Если класс имеет экземпляры или изменения относятся к важным квалификаторам, обновление завершается сбоем.
WBEM_FLAG_UPDATE_SAFE_MODE 0x20 Позволяет обновлять классы, даже если есть дочерние классы, если изменение не вызывает никаких конфликтов с дочерними классами. Например, этот флаг позволяет добавить новое свойство в базовый класс, который ранее не упоминался ни в одном из дочерних классов. Если у класса есть экземпляры, обновление завершается ошибкой.
WBEM_FLAG_UPDATE_FORCE_MODE 0x40 принудительно обновляет классы при наличии конфликтующих дочерних классов. Например, этот флаг вызывает обновление, если квалификатор класса определен в дочернем классе, а базовый класс пытается добавить тот же квалификатор, который конфликтует с существующим. В принудительном режиме конфликт tis разрешается путем удаления конфликтующего квалификатора в дочернем классе.

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 Задан недопустимый класс. Как правило, это означает, что pObject указывает объект экземпляра.
WBEM_E_INVALID_PARAMETER 0x80041008 Недействительный параметр.
WBEM_E_INVALID OPERATION 0x80041016 Недопустимое имя указанного класса.
WBEM_E_CLASS_HAS_CHILDREN 0x80041025 Предпринята попытка внести изменение, которое сделает недействительным подкласс.
WBEM_E_ALREADY_EXISTS 0x80041019 Флаг WBEM_FLAG_CREATE_ONLY был указан, но класс уже существует.
WBEM_E_NOT_FOUND 0x80041002 WBEM_FLAG_UPDATE_ONLY был указан в lFlags, и класс не найден.
WBEM_E_INCOMPLETE_CLASS 0x80041020 Обязательные свойства для классов заданы не все.
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 utClass .

Пользователь не может создавать классы с именами, которые начинаются или заканчиваются символом подчеркивания.

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

Требования

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

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

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

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