Метод SWbemObject.PutAsync_
Метод PutAsync_SWbemObject асинхронно создает или обновляет экземпляр или объект класса для инструментария управления Windows (WMI). Этот метод можно использовать после изменения любых свойств или методов в SWbemObject, а изменения записываются в WMI.
Описание этого синтаксиса см. в разделе Соглашения о документах для API сценариев.
Синтаксис
SWbemObject.PutAsync_( _
ByVal objWbemSink, _
[ ByVal iFlags ], _
[ ByVal objWbemNamedValueSet ], _
[ ByVal objWbemAsyncContext ] _
)
Параметры
-
objWbemSink [in]
-
Обязательный. Приемник объектов, который асинхронно получает результат операции put .
-
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))
-
Вызывает блокировку этого вызова до завершения запроса.
-
wbemFlagSendStatus (128 (0x80))
-
Вызывает асинхронные вызовы для отправки обновлений состояния в обработчик событий SWbemSink.OnProgress для приемника объекта.
-
wbemFlagDontSendStatus (0 (0x0))
-
Запрещает асинхронным вызовам отправлять обновления состояния в обработчик событий OnProgress для приемника объектов.
-
wbemFlagUseAmendedQualifiers (131072 (0x20000))
-
Заставляет WMI записывать данные изменений класса вместе с определением базового класса. Дополнительные сведения о измененных квалификаторах см. в разделе Локализация сведений о классе WMI.
objWbemNamedValueSet [in, необязательный]
Как правило, это не определено. В противном случае это объект SWbemNamedValueSet , элементы которого представляют сведения контекста, которые могут использоваться поставщиком, обслуживающим запрос. Поставщик, который поддерживает или требует эти сведения, должен документировать имена распознаваемых значений, тип данных значения, допустимые значения и семантику.
objWbemAsyncContext [in, необязательно]
Это объект SWbemNamedValueSet , который возвращается в приемник объекта для определения источника исходного асинхронного вызова. Используйте этот параметр, если выполняете несколько асинхронных вызовов с использованием одного и того же приемника объектов. Чтобы использовать этот параметр, создайте объект SWbemNamedValueSet и используйте метод SWbemNamedValueSet.Add , чтобы добавить значение, определяющее асинхронный вызов, который вы выполняете. Этот объект SWbemNamedValueSet возвращается в приемник объекта, а источник вызова можно извлечь с помощью метода SWbemNamedValueSet.Item . Дополнительные сведения см. в разделе Вызов метода .
Возвращаемое значение
Этот метод не возвращает значение. Если вызов выполнен успешно, событие OnObjectPut предоставленного приемника объекта получает объект SWbemObjectPath , содержащий путь к объекту экземпляра или класса, успешно зафиксированного в WMI.
Коды ошибок
После завершения метода PutAsync_ объект Err может содержать один из кодов ошибок в следующем списке.
-
wbemErrAccessDenied — 2147749891 (0x80041003)
-
Текущий пользователь не имеет разрешения на обновление экземпляра указанного класса.
-
wbemErrAlreadyExists — 2147749913 (0x80041019)
-
Был указан флаг wbemChangeFlagCreateOnly , но экземпляр уже существует.
-
wbemErrFailed — 2147749889 (0x80041001)
-
Незаданная ошибка.
-
wbemErrIllegalNull — 2147749898 (0x8004100A)
-
Значение Nothing было указано для свойства, которое не может иметь значение Nothing. Примером такого свойства является свойство, помеченное квалификатором Key, Indexed или Not_Null .
-
wbemErrInvalidObject — 2147749908 (0x80041014)
-
Задан недопустимый экземпляр.
-
wbemErrInvalidParameter — 2147749896 (0x80041008)
-
Указанный параметр недопустим.
-
wbemErrNotFound — 2147749890 (0x80041002)
-
Был указан флаг wbemChangeFlagUpdateOnly , но экземпляр или класс не существует.
-
wbemErrIncompleteClass — 2147749920 (0x80041020)
-
Обязательные свойства для классов заданы не все.
-
wbemErrOutOfMemory — 2147749894 (0x80041006)
-
Недостаточно памяти для завершения операции.
Комментарии
Этот вызов возвращается немедленно, и результат операции put возвращается вызывающей объекту через обратные вызовы, доставленные в приемник, указанный в objWbemSink. Реализуйте objWbemSink. Метод OnObjectPut для получения пути к объекту экземпляра или класса, записываемого в репозиторий WMI. Дополнительные сведения о методах приемника см. в разделе Вызов метода .
Асинхронный обратный вызов позволяет пользователю, не прошедшему проверку подлинности, предоставлять данные в приемник. Это создает угрозу безопасности для сценариев и приложений. Чтобы избежать рисков, используйте полусинхронную или синхронную связь. Дополнительные сведения см. в разделе Вызов метода .
Требования
Требование | Значение |
---|---|
Минимальная версия клиента |
Windows Vista |
Минимальная версия сервера |
Windows Server 2008 |
Заголовок |
|
Библиотека типов |
|
DLL |
|
CLSID |
CLSID_SWbemObject |
IID |
IID_ISWbemObject |