Бөлісу құралы:


Функция ExecNotificationQueryWmi

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

Примечание

Этот интерфейс API предназначен только для внутреннего использования. Он не предназначен для использования из кода разработчика.

Синтаксис

HRESULT ExecNotificationQueryWmi (
   [in] BSTR                    strQueryLanguage,
   [in] BSTR                    strQuery,
   [in] long                    lFlags,
   [in] IWbemContext*           pCtx,
   [out] IEnumWbemClassObject** ppEnum,
   [in] DWORD                   authLevel,
   [in] DWORD                   impLevel,
   [in] IWbemServices*          pCurrentNamespace,
   [in] BSTR                    strUser,
   [in] BSTR                    strPassword,
   [in] BSTR                    strAuthority
);

Параметры

strQueryLanguage
[in] Строка с допустимым языком запросов, поддерживаемым управлением Windows. Это должно быть "WQL", аббревиатура языка запросов WMI.

strQuery
[in] Текст запроса. Этот параметр не может иметь значение null.

lFlags
[in] Сочетание следующих двух флагов, влияющих на поведение этой функции. Эти значения определяются в файле заголовка WbemCli.h , или их можно определить как константы в коде.

Константа Значение Описание
WBEM_FLAG_RETURN_IMMEDIATELY 0x10 Флаг вызывает полусинхронный вызов. Если этот флаг не установлен, вызов завершается ошибкой. Это связано с тем, что события получаются непрерывно, что означает, что пользователь должен опросить возвращенный перечислитель. Блокировка этого вызова на неопределенный срок делает это невозможным.
WBEM_FLAG_FORWARD_ONLY 0x20 Функция возвращает перечислитель только вперед. Как правило, перечислители только вперед работают быстрее и используют меньше памяти, чем обычные перечислители, но не допускают вызовы клонирования.

pCtx
[in] Как правило, это значение равно null. В противном случае это указатель на экземпляр IWbemContext , который может использоваться поставщиком, предоставляющим запрошенные события.

ppEnum
[out] Если ошибка не возникает, получает указатель на перечислитель, который позволяет вызывающей объекту извлекать экземпляры в результирующем наборе запроса. Дополнительные сведения см. в разделе Примечания .

authLevel
[in] Уровень авторизации.

impLevel
[in] Уровень олицетворения.

pCurrentNamespace
[in] Указатель на объект IWbemServices , представляющий текущее пространство имен.

strUser
[in] Имя пользователя. Дополнительные сведения см. в разделе Функция ConnectServerWmi .

strPassword
[in] Пароль. Дополнительные сведения см. в разделе Функция ConnectServerWmi .

strAuthority
[in] Доменное имя пользователя. Дополнительные сведения см. в разделе Функция ConnectServerWmi .

Возвращаемое значение

Следующие значения, возвращаемые этой функцией, определяются в файле заголовка WbemCli.h , или их можно определить как константы в коде:

Константа Значение Описание
WBEM_E_ACCESS_DENIED 0x80041003 У пользователя нет разрешения на просмотр одного или нескольких классов, которые функция может вернуть.
WBEM_E_FAILED 0x80041001 Возникла неопределенная ошибка.
WBEM_E_INVALID_PARAMETER 0x80041008 Недействительный параметр.
WBEM_E_INVALID_CLASS 0x80041010 Запрос указывает класс, который не существует.
WBEMESS_E_REGISTRATION_TOO_PRECISE 0x80042002 Запрошена слишком большая точность доставки событий. Необходимо указать больший допуск опроса.
WBEMESS_E_REGISTRATION_TOO_BROAD 0x80042001 Запрос запрашивает больше сведений, чем может предоставить управление Windows. Возвращается HRESULT , когда запрос события приводит к запросу на опрос всех объектов в пространстве имен.
WBEM_E_INVALID_QUERY 0x80041017 В запросе возникла синтаксическая ошибка.
WBEM_E_INVALID_QUERY_TYPE 0x80041018 Запрошенный язык запросов не поддерживается.
WBEM_E_QUOTA_VIOLATION 0x8004106c Запрос слишком сложный.
WBEM_E_OUT_OF_MEMORY 0x80041006 Недостаточно памяти для выполнения операции.
WBEM_E_SHUTTING_DOWN 0x80041033 Вероятно, инструментарий WMI был остановлен и перезапущен. Снова вызовите ConnectServerWmi .
WBEM_E_TRANSPORT_FAILURE 0x80041015 Сбой связи удаленного вызова процедуры (RPC) между текущим процессом и WMI.
WBEM_E_UNPARSABLE_QUERY 0x80041058 Не удается проанализировать запрос.
WBEM_S_NO_ERROR 0 Вызов функции выполнен успешно.

Комментарии

Эта функция заключает в оболочку вызов метода IWbemServices::ExecNotificationQuery .

После возврата функции вызывающий объект периодически передает возвращенный ppEnum объект в функцию Next , чтобы узнать, доступны ли какие-либо события.

Существуют ограничения на количество AND ключевых слов и OR , которые можно использовать в WQL-запросах. Большое количество ключевых слов WQL, используемых в сложном запросе, может привести к тому, что WMI вернет WBEM_E_QUOTA_VIOLATION код ошибки (или 0x8004106c) в HRESULT качестве значения. Ограничение ключевых слов WQL зависит от сложности запроса.

Если вызов функции завершается ошибкой, можно получить дополнительные сведения об ошибке, вызвав функцию GetErrorInfo .

Требования

Платформы: см. раздел Требования к системе.

Заголовка: WMINet_Utils.idl

версии платформа .NET Framework: доступно с версии 4.7.2.

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