Метод 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))

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

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

Remarks

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

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

Требования

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