Метод SWbemServicesEx.Put

Метод Put объекта SWbemServicesEx сохраняет объект в пространстве имен, привязанном к объекту, и возвращает объект SWbemObjectPath , содержащий путь к объекту, в который были записаны данные.

Этот метод вызывается в полусинхронном режиме. Дополнительные сведения см. в разделе Вызов метода.

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

Синтаксис

objObjectPath = .Put( _
  ByVal objWbemObject, _
  [ ByVal iFlags ], _
  [ ByVal objWbemNamedValueSet ] _
)

Параметры

objWbemObject

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

iFlags [необязательно]

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

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 [необязательно]

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

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

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

Коды ошибок

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

wbemErrAccessDenied — 2147749891 (0x80041003)

Текущий пользователь не имеет разрешения на операцию.

wbemErrAlreadyExists — 2147749913 (0x80041019)

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

wbemErrFailed — 2147749889 (0x80041001)

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

wbemErrIllegalNull — 2147749898 (0x8004100A)

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

wbemErrInvalidObject — 2147749908 (0x80041014)

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

wbemErrInvalidParameter — 2147749896 (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_ISWbemServicesEx
IID
IID_ISWbemServicesEx