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


Метод SWbemServicesEx.PutAsync

Метод PutAsync объекта SWbemServicesEx асинхронно сохраняет объект в пространстве имен. При успешном выполнении этот метод отправляет событие OnCompleted в объект SWbemSink , указанный в качестве входного параметра.

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

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

Синтаксис

SWbemServicesEx.PutAsync( _
  ByVal objWbemSink, _
  ByVal ojbWbemObject, _
  [ ByVal iFlags ], _
  [ ByVal objWbemNamedValueSet ], _
  [ ByVal objWbemAsyncContext ] _
)

Параметры

objWbemSink

Обязательный. Приемник объектов, который получает объекты асинхронно. Создайте объект SWbemSink для получения объектов .

ojbWbemObject

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

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 , элементы которого представляют сведения контекста, которые могут использоваться поставщиком, который обслуживает запрос. Поставщик, который поддерживает или требует такие сведения, должен документировать имена распознаваемых значений, тип данных значения, допустимые значения и семантику.

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

Объект 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)

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

wbemErrInvalidObject — 2147749908 (0x80041014)

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

wbemErrInvalidParameter — 2147749896 (0x80041008)

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

wbemErrNotFound — 2147749890 (0x80041002)

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

wbemErrIncompleteClass — 2147749920 (0x80041020)

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

wbemErrOutOfMemory — 2147749894 (0x80041006)

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

Комментарии

Этот вызов возвращается немедленно, а результаты и состояние возвращаются вызывающей через события, доставляемые в приемник, указанный в objWbemSink. Для обработки каждого объекта при его поступлении создайте objWbemSink. Подпрограмма события OnObjectReady . Любая обработка, выполняемая после поступления всех объектов, выполняется в подпрограмме objWbemSink. Событие OnCompleted .

Асинхронный обратный вызов позволяет пользователю, не прошедшему проверку подлинности, предоставлять данные в приемник. Это создает угрозы безопасности для сценариев и приложений. Сведения об устранении рисков см. в статье Настройка безопасности при асинхронном вызове.

Требования

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