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


Метод 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
Заголовок
Wbemdisp.h
Библиотека типов
Wbemdisp.tlb
DLL
Wbemdisp.dll
CLSID
CLSID_SWbemObject
IID
IID_ISWbemObject

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

SWbemObject

SWbemObjectPath.Class

SWbemProperty

SWbemQualifier