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


Метод SWbemObject.Put_

Метод Put_SWbemObject создает или обновляет экземпляр или объект класса до инструментария управления Windows (WMI). Этот метод можно использовать после изменения любых свойств или методов в SWbemObject, а изменения записываются в WMI.

Описание этого синтаксиса см. в разделе Соглашения о документах для API скриптов.

Синтаксис

objObjectPath = .Put_( _
  [ ByVal iFlags ], _
  [ ByVal objwbemNamedValueSet ] _
)

Параметры

iFlags [in, необязательный]

Этот параметр определяет, создает ли вызов или обновляет класс или экземпляр и возвращается ли вызов немедленно. Этот параметр может принимать следующие значения.

wbemChangeFlagUpdateCompatible (0 (0x0))

Позволяет обновлять класс, если нет производных классов и экземпляров для этого класса. Он также позволяет обновлять во всех случаях, если изменение связано только с неважными квалификаторами (например, квалификатор описания ). Это поведение по умолчанию для этого вызова и используется для совместимости с предыдущими версиями WMI. Если класс содержит экземпляры, обновление завершается сбоем.

wbemChangeFlagUpdateSafeMode (32 (0x20))

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

WbemChangeFlagUpdateForceMode (64 (0x40))

Этот флаг принудительно обновляет классы при наличии конфликтующих дочерних классов. Например, этот флаг принудительно обновляется, если квалификатор класса определен в дочернем классе, а базовый класс пытается добавить тот же квалификатор и конфликтует с существующим. В принудительном режиме этот конфликт будет устранен путем удаления конфликтующего квалификатора в дочернем классе. Если класс содержит экземпляры, обновление завершится ошибкой.

Использование принудительного режима для обновления статического класса приводит к удалению всех экземпляров этого класса. Принудительное обновление класса поставщика не приводит к удалению экземпляров класса .

wbemChangeFlagCreateOrUpdate (0 (0x0))

Приводит к созданию класса или экземпляра, если они не существуют, или перезаписи, если они уже существуют.

wbemChangeFlagCreateOnly (2 (0x2))

Используется только для создания. Вызов завершается ошибкой, если класс или экземпляр уже существует.

wbemChangeFlagUpdateOnly (1 (0x1))

Вызывает этот вызов для обновления. Класс или экземпляр должен существовать, чтобы вызов был успешным.

wbemFlagReturnImmediately (16 (0x10))

Вызывает немедленный возврат вызова.

wbemFlagReturnWhenComplete (0 (0x0))

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

wbemFlagUseAmendedQualifiers (131072 (0x20000))

Заставляет WMI записывать данные изменения класса, а также определение базового класса. Дополнительные сведения о измененных квалификаторах см. в разделе Локализация сведений о классе WMI.

objwbemNamedValueSet [in, необязательный]

Как правило, это не определено. В противном случае это объект SWbemObjectPath , элементы которого представляют сведения контекста, которые могут использоваться поставщиком, обслуживающим запрос. Поставщик, который поддерживает или требует такие сведения, должен документировать имена распознаваемых значений, тип данных значения, допустимые значения и семантику.

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

Если вызов выполнен успешно, возвращается объект SWbemObjectPath . Этот объект содержит путь к объекту экземпляра или класса, который был успешно зафиксирован в WMI.

Коды ошибок

После завершения метода Put_ объект Err может содержать один из кодов ошибок из следующего списка.

wbemErrAccessDenied — 2147749891

Текущий пользователь не имеет разрешения на обновление экземпляра указанного класса.

wbemErrAlreadyExists — 2147749913 (0x80041019)

Был указан флаг wbemChangeFlagCreateOnly , но экземпляр уже существует.

wbemErrFailed — 2147749889 (0x80041001)

Незаданная ошибка.

wbemErrIllegalNull — 2147749898 (0x8004100A)

Для свойства, которое не может иметь значение Nothing, было указано значение Nothing. Примером такого свойства является свойство, помеченное квалификатором Key,Indexed или Not_Null.

wbemErrInvalidObject — 2147749908 (0x80041014)

Задан недопустимый экземпляр.

wbemErrInvalidParameter — 0x80041008

Указанный параметр недопустим.

wbemErrNotFound — 2147749890 (0x80041002)

Был указан флаг wbemChangeFlagUpdateOnly , но экземпляр или класс не существует.

wbemErrIncompleteClass — 2147749920 (0x80041020)

Для классов заданы не все обязательные свойства.

wbemErrOutOfMemory — 2147749894 (0x80041006)

Недостаточно памяти для завершения операции.

Требования

Требование Значение
Минимальная версия клиента
Windows Vista
Минимальная версия сервера
Windows Server 2008
Заголовок
Wbemdisp.h
Библиотека типов
Wbemdisp.tlb
DLL
Wbemdisp.dll
CLSID
CLSID_SWbemObject
IID
IID_ISWbemObject

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

SWbemObject

SWbemObjectPath.Class

SWbemProperty

SWbemQualifier