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