Метод SWbemServices.ExecQueryAsync
Метод ExecQueryAsync объекта SWbemServices выполняет запрос для получения объектов. Вызов этого метода возвращается немедленно, а результаты и состояние возвращаются вызывающей объекту через события, доставляемые в приемник, указанный в objWbemSink. Чтобы обработать каждый возвращенный объект, создайте objWbemSink. Подпрограмма события OnObjectReady .
Метод вызывается в асинхронном режиме. Дополнительные сведения см. в разделе Вызов метода .
Описание этого синтаксиса см. в разделе Соглашения о документах для API сценариев.
Синтаксис
objWbemObjectSet = .ExecQueryAsync( _
[ ByVal objWbemSink ], _
ByVal strQuery, _
[ ByVal strQueryLanguage ], _
[ ByVal iFlags ], _
[ ByVal objwbemNamedValueSet ], _
[ ByVal objWbemAsyncContext ] _
)
Параметры
-
objWbemSink [необязательно]
-
Приемник объекта, который выполняет запрос асинхронно. Создайте объект SWbemSink для получения объектов.
-
strQuery
-
Обязательный. Строка, содержащая текст запроса. Этот параметр не может быть пустым. Дополнительные сведения о создании строк запросов WMI см. в разделах Запросы с помощью WQL и Справочник по WQL .
-
strQueryLanguage [необязательно]
-
Строка, содержащая используемый язык запросов. Если этот параметр задан, значение должно быть WQL.
-
iFlags [необязательно]
-
Целое число, определяющее поведение запроса. Этот параметр может принимать следующие значения.
-
wbemFlagSendStatus (128 (0x80))
-
Вызывает асинхронные вызовы для отправки обновлений состояния в обработчик событий OnProgress для приемника объекта.
-
wbemFlagDontSendStatus (0 (0x0))
-
Запрещает асинхронным вызовам отправлять обновления состояния в обработчик событий OnProgress для приемника объектов.
-
wbemQueryFlagPrototype (2 (0x2))
-
Используется для прототипа. Он останавливает выполнение запроса и вместо этого возвращает объект, который выглядит как типичный результирующий объект.
-
wbemFlagUseAmendedQualifiers (131072 (0x20000))
-
Заставляет WMI возвращать данные о поправках класса с определением базового класса. Дополнительные сведения см. в разделе Локализация сведений о классе WMI.
objwbemNamedValueSet [необязательно]
Как правило, это не определено. В противном случае это объект SWbemNamedValueSet , элементы которого представляют контекстную информацию, которую может использовать поставщик, который обслуживает запрос. Поставщик, поддерживающий или требующий контекстной информации, должен документировать имена распознаваемых значений, тип данных значения, допустимые значения и семантику.
objWbemAsyncContext [необязательно]
Объект SWbemNamedValueSet , возвращающийся в приемник объекта для идентификации источника исходного асинхронного вызова. Используйте этот параметр для выполнения нескольких асинхронных вызовов с использованием одного и того же приемника объектов. Чтобы использовать этот параметр, создайте объект SWbemNamedValueSet и используйте метод SWbemNamedValueSet.Add , чтобы добавить значение, определяющее асинхронный вызов, который вы выполняете. Этот объект SWbemNamedValueSet возвращается в приемник объекта, а источник вызова можно извлечь с помощью метода SWbemNamedValueSet.Item . Дополнительные сведения см. в разделе Вызов метода .
Возвращаемое значение
Этот метод не имеет возвращаемых значений. В случае успешного выполнения приемник получает событие OnObjectReady для каждого экземпляра . После последнего экземпляра приемник объекта получает событие OnCompleted .
Коды ошибок
После завершения метода ExecQueryAsync объект Err может содержать один из кодов ошибок в следующем списке.
-
wbemErrAccessDenied — 2147749891 (0x80041003)
-
Текущий пользователь не имеет разрешения на просмотр результирующих наборов.
-
wbemErrFailed — 2147749889 (0x80041001)
-
Незаданная ошибка.
-
wbemErrInvalidParameter — 2147749896 (0x80041008)
-
Указан недопустимый параметр.
-
wbemErrInvalidQuery — 2147749911 (0x80041017)
-
Недопустимый синтаксис запроса.
-
wbemErrInvalidQueryType — 2147749912 (0x80041018)
-
Запрошенный язык запросов не поддерживается.
-
wbemErrOutOfMemory — 2147749894 (0x80041006)
-
Недостаточно памяти для завершения операции.
Комментарии
Этот вызов возвращается немедленно. Запрошенные объекты и состояние возвращаются вызывающей объекту с помощью обратных вызовов, доставленных в приемник, указанный в objWbemSink. Чтобы обработать каждый возвращаемый объект, создайте objWbemSink. Подпрограмма события OnObjectReady . После возврата всех объектов выполните окончательную обработку в реализации objWbemSink. Событие OnCompleted .
Асинхронный обратный вызов позволяет пользователю, не прошедшему проверку подлинности, предоставлять данные в приемник. Это создает угрозу безопасности для сценариев и приложений. Сведения об устранении рисков см. в статье Настройка безопасности при асинхронном вызове.
Метод ExecQueryAsync возвращает пустой результирующий набор, если в запросе нет объектов, соответствующих условиям. Этот метод возвращает свойства ключа независимо от того, запрашивается ли свойство Key в параметре strQuery .
Существуют ограничения на количество ключевых слов AND и OR , которые можно использовать в WQL-запросах. Большое количество ключевых слов WQL, используемых в сложном запросе, может привести к возврату WMI кода ошибки WBEM_E_QUOTA_VIOLATION в качестве значения HRESULT . Ограничение ключевых слов WQL зависит от сложности запроса.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента |
Windows Vista |
Минимальная версия сервера |
Windows Server 2008 |
Заголовок |
|
Библиотека типов |
|
DLL |
|
CLSID |
CLSID_SWbemServices |
IID |
IID_ISWbemServices |