Интерфейс IWbemServices (wbemcli.h)
Интерфейс IWbemServices используется клиентами и поставщиками для доступа к службам WMI. Интерфейс реализуется поставщиками WMI и WMI и является основным интерфейсом WMI.
IWbemClassObject *pObj = NULL;
// The pWbemSvc pointer is of type IWbemServices*
// BSTR is not compatible with wchar_t, need to allocate.
BSTR path = SysAllocString(L"path");
pWbemSvc->GetObject(path, 0, 0, &pObj, 0);
SysFreeString(path);
Наследование
Интерфейс IWbemServices наследуется от интерфейса IUnknown . IWbemServices также имеет следующие типы элементов:
Методы
Интерфейс IWbemServices содержит следующие методы.
IWbemServices::CancelAsyncCall Метод IWbemServices::CancelAsyncCall отменяет все ожидающие в настоящее время асинхронные вызовы на основе указателя IWbemObjectSink, который изначально был передан в асинхронный метод. |
IWbemServices::CreateClassEnum Метод IWbemServices::CreateClassEnum возвращает перечислитель для всех классов, удовлетворяющих критериям выбора. |
IWbemServices::CreateClassEnumAsync Метод IWbemServices::CreateClassEnumAsync возвращает перечисление всех классов, поддерживаемых поставщиком классов. |
IWbemServices::CreateInstanceEnum Метод IWbemServices::CreateInstanceEnum создает перечислитель, который возвращает экземпляры указанного класса в соответствии с заданными пользователем критериями выбора. |
IWbemServices::CreateInstanceEnumAsync Метод IWbemServices::CreateInstanceEnumAsync создает перечислитель, который асинхронно возвращает экземпляры указанного класса в соответствии с заданными пользователем критериями выбора. |
IWbemServices::D eleteClass Метод IWbemServices::D eleteClass удаляет указанный класс из текущего пространства имен. |
IWbemServices::D eleteClassAsync Метод IWbemServices::D eleteClassAsync удаляет указанный класс из текущего пространства имен. |
IWbemServices::D eleteInstance Метод IWbemServices::D eleteInstance удаляет экземпляр существующего класса в текущем пространстве имен. |
IWbemServices::D eleteInstanceAsync Метод IWbemServices::D eleteInstanceAsync асинхронно удаляет экземпляр существующего класса в текущем пространстве имен. Подтверждение или сбой операции передается через интерфейс IWbemObjectSink, реализованный вызывающим объектом. |
IWbemServices::ExecMethod Выполняет метод, экспортируемый объектом CIM. |
IWbemServices::ExecMethodAsync Асинхронно выполняет метод, экспортируемый объектом CIM. |
IWbemServices::ExecNotificationQuery Метод IWbemServices::ExecNotificationQuery выполняет запрос для получения событий. Вызов возвращается немедленно, и пользователь может опросить возвращенный перечислитель на наличие событий по мере их поступления. Освобождение возвращенного перечислителя отменяет запрос. |
IWbemServices::ExecNotificationQueryAsync Метод IWbemServices::ExecNotificationQueryAsync выполняет ту же задачу, что и IWbemServices::ExecNotificationQuery, за исключением того, что события передаются указанному обработчику ответа до тех пор, пока не будет вызван метод CancelAsyncCall для остановки уведомления о событии. |
IWbemServices::ExecQuery Метод IWbemServices::ExecQuery выполняет запрос для получения объектов. |
IWbemServices::ExecQueryAsync Метод IWbemServices::ExecQueryAsync выполняет запрос для асинхронного извлечения объектов. |
IWbemServices::GetObject Метод IWbemServices::GetObject извлекает класс или экземпляр. Этот метод извлекает объекты только из пространства имен, связанного с текущим объектом IWbemServices. |
IWbemServices::GetObjectAsync Метод IWbemServices::GetObjectAsync извлекает объект ( определение класса или экземпляр) на основе его пути. |
IWbemServices::OpenNamespace Метод IWbemServices::OpenNamespace предоставляет вызывающей объекту новый указатель IWbemServices, который имеет указанное дочернее пространство имен в качестве рабочего контекста. |
IWbemServices::P utClass Метод IWbemServices::P utClass создает новый класс или обновляет существующий. Класс, указанный параметром pObject, должен быть правильно инициализирован всеми необходимыми значениями свойств. |
IWbemServices::P utClassAsync Метод IWbemServices::P utClassAsync создает новый класс или обновляет существующий. |
IWbemServices::P utInstance Метод IWbemServices::P utInstance создает или обновляет экземпляр существующего класса. Экземпляр записывается в репозиторий WMI. |
IWbemServices::P utInstanceAsync Метод IWbemServices::P utInstanceAsync асинхронно создает или обновляет экземпляр существующего класса. Подтверждение обновления или отчеты об ошибках предоставляются через интерфейс IWbemObjectSink, реализованный вызывающим объектом. |
IWbemServices::QueryObjectSink Метод IWbemServices::QueryObjectSink позволяет вызывающей объекту получить обработчик уведомлений, экспортируемый службой управления Windows. |
Комментарии
Поставщики, реализующие интерфейс IWbemServices , должны следовать документируемой семантике каждого метода, который они реализуют; Поставщики и должны поддерживать указанные коды возврата ошибок. WMI реализует все методы, и, как правило, каждый поставщик реализует небольшое подмножество доступных функций в интерфейсе. Поставщики должны возвращать WBEM_E_PROVIDER_NOT_CAPABLE для любого метода, который они не реализуют.
Перед вызовом метода интерфейса все указатели исходящего интерфейса из любого метода IWbemServices должны быть инициализированы значением NULL . Например, вызовы метода IWbemServices::GetObject возвращают указатель интерфейса IWbemClassObject , который должен быть предварительно инициализирован в значение NULL перед вызовом метода IWbemServices::GetObject .
Примеры
Несколько примеров C++ с использованием IWbemServices см. в разделе Примеры приложений WMI C++ .
В следующем примере кода показано, как поставщик может получить указатель IWbemServices . Для компиляции кода требуются следующие #include операторы и ссылки.
#include <iostream>
using namespace std;
#include <wbemidl.h>
#pragma comment(lib, "wbemuuid.lib")
IWbemLocator *pIWbemLocator = NULL;
HRESULT hRes = CoCreateInstance (
CLSID_WbemAdministrativeLocator,
NULL ,
CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER ,
IID_IUnknown ,
( void ** ) &pIWbemLocator
) ;
IWbemServices *pWbemServices = NULL;
if (SUCCEEDED(hRes))
{
BSTR namespace = SysAllocString(L"root\\CIMV2");
hRes = pIWbemLocator->ConnectServer(
namespace, // Namespace
NULL, // Userid
NULL, // PW
NULL, // Locale
0, // flags
NULL, // Authority
NULL, // Context
&pWbemServices
);
SysFreeString(namespace);
pIWbemLocator->Release(); // Free memory resources.
// Use pWbemServices
}
// Clean up
pWbemServices->Release();
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows Vista |
Минимальная версия сервера | Windows Server 2008 |
Целевая платформа | Windows |
Header | wbemcli.h (включая Wbemidl.h) |