Интерфейс 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)

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

COM API для WMI

Создание поставщиков WMI

Управление сведениями о классе и экземпляре

Передача данных в WMI путем записи поставщика