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