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


Функция ExecQueryWmi

Выполняет запрос для получения объектов.

Примечание

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

Синтаксис

HRESULT ExecQueryWmi (
   [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_USE_AMENDED_QUALIFIERS 0x20000 Если этот параметр задан, функция извлекает измененные квалификаторы, хранящиеся в локализованном пространстве имен языкового стандарта текущего подключения.
Если значение не задано, функция извлекает только квалификаторы, хранящиеся в непосредственном пространстве имен.
WBEM_FLAG_RETURN_IMMEDIATELY 0x10 Флаг вызывает полусинхронный вызов.
WBEM_FLAG_FORWARD_ONLY 0x20 Функция возвращает перечислитель только вперед. Как правило, перечислители только для пересылки работают быстрее и используют меньше памяти, чем обычные перечислители, но не разрешают вызовы клонирования.
WBEM_FLAG_BIDIRECTIONAL 0 WMI сохраняет указатели на объекты в перечислении, пока они не будут освобождены.
WBEM_FLAG_ENSURE_LOCATABLE 0x100 Гарантирует, что все возвращаемые объекты содержат достаточно информации, чтобы системные свойства, такие как __PATH, __RELPATH и __SERVER, не nullбыли .
WBEM_FLAG_PROTOTYPE 2 Этот флаг используется для создания прототипов. Он не выполняет запрос и вместо этого возвращает объект, который выглядит как типичный результирующий объект.
WBEM_FLAG_DIRECT_READ 0x200 Вызывает прямой доступ к поставщику для указанного класса без учета его родительского класса или любых подклассов.

Рекомендуется WBEM_FLAG_RETURN_IMMEDIATELY использовать флаги и WBEM_FLAG_FORWARD_ONLY для наилучшей производительности.

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_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_NOT_FOUND 0x80041002 Запрос указывает класс, который не существует.
WBEM_S_NO_ERROR 0 Вызов функции выполнен успешно.

Комментарии

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

Эта функция обрабатывает запрос, указанный в параметре strQuery , и создает перечислитель, с помощью которого вызывающий объект может получить доступ к результатам запроса. Перечислитель является указателем на интерфейс IEnumWbemClassObject ; Результаты запроса представляют собой экземпляры объектов класса, доступных через интерфейс IWbemClassObject .

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

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

Требования

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

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

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

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