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


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

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

SWbemServices

Вызов метода

SWbemServices.Get