Метод 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 |
Заголовок |
|
Библиотека типов |
|
DLL |
|
CLSID |
CLSID_ISWbemServicesEx |
IID |
IID_ISWbemServicesEx |