Интерфейс IEnumWbemClassObject (wbemcli.h)
Интерфейс IEnumWbemClassObject используется для перечисления объектов CIM и аналогичен стандартному перечислительу COM.
Объект типа IEnumWbemClassObject получается из вызовов следующих методов:
- IWbemServices::ExecQuery
- IWbemServices::CreateInstanceEnum
- IWbemServices::CreateClassEnum
- IWbemServices::ExecNotificationQuery
Наследование
Интерфейс IEnumWbemClassObject наследуется от интерфейса IUnknown . IEnumWbemClassObject также имеет следующие типы элементов:
Методы
Интерфейс IEnumWbemClassObject содержит следующие методы.
IEnumWbemClassObject::Clone Метод IEnumWbemClassObject::Clone создает логическую копию всего перечислителя, сохраняя его текущую позицию в перечислении. |
IEnumWbemClassObject::Next Используйте метод IEnumWbemClassObject::Next, чтобы получить один или несколько объектов, начиная с текущей позиции в перечислении. |
IEnumWbemClassObject::NextAsync Используйте метод NextAsync, если требуется управляемое асинхронное извлечение объектов в приемник. |
IEnumWbemClassObject::Reset Метод IEnumWbemClassObject::Reset сбрасывает последовательность перечисления обратно в начало. Так как объекты CIM являются динамическими, вызов этого метода не обязательно возвращает тот же список объектов, который вы получили ранее. |
IEnumWbemClassObject::Skip Метод IEnumWbemClassObject::Skip можно использовать для перемещения текущей позиции в перечислении вперед на указанное количество объектов. Кроме того, это влияет на последующие вызовы NextAsync, но не влияет на ожидающие поставки, начатые с помощью NextAsync. |
Комментарии
IEnumWbemClassObject — это объект, возвращаемый из запроса WMI, и используется для перечисления возвращаемых значений. Дополнительные сведения об использовании этого класса см. в разделах Запрос WMI и Перечисление WMI.
Примеры
В следующем примере кода C++ описывается, как получить IEnumWbemClassObject.
void ExecQuerySync(IWbemServices *pSvc)
{
// Query for all users and groups.
BSTR Language = SysAllocString(L"WQL");
BSTR Query = SysAllocString(L"SELECT * FROM __Namespace");
// Initialize the IEnumWbemClassObject pointer.
IEnumWbemClassObject *pEnum = 0;
// Issue the query.
HRESULT hRes = pSvc->ExecQuery(
Language,
Query,
WBEM_FLAG_FORWARD_ONLY, // Flags
0, // Context
&pEnum
);
SysFreeString(Query);
SysFreeString(Language);
if (hRes != 0)
{
printf("Error\n");
return;
}
ULONG uTotal = 0;
// Retrieve the objects in the result set.
for (;;)
{
IWbemClassObject *pObj = 0;
ULONG uReturned = 0;
hRes = pEnum->Next(
0, // Time out
1, // One object
&pObj,
&uReturned
);
uTotal += uReturned;
if (uReturned == 0)
break;
// Use the object.
// ...
// Release it.
// ===========
pObj->Release(); // Release objects not owned.
}
// All done.
pEnum->Release();
}
Требования
Минимальная версия клиента | Windows Vista |
Минимальная версия сервера | Windows Server 2008 |
Целевая платформа | Windows |
Header | wbemcli.h (включая Wbemidl.h) |