Метод IWbemHiPerfProvider::CreateRefreshableEnum (wbemprov.h)
Метод IWbemHiPerfProvider::CreateRefreshableEnum создает новое обновляемое перечисление. WMI Refresher вызывает этот метод в ответ на запрос клиента к IWbemConfigureRefresher::AddEnum. Поставщик связывает предоставленный объект IWbemHiPerfEnum с предоставленным средством обновления. При каждом вызове метода Refresh указанного средства обновления поставщик гарантирует, что перечислитель содержит набор всех экземпляров класса, перечисленных в параметре wszClass , и что эти экземпляры содержат обновленную информацию. Один из возможных способов сделать это — сохранить в средстве обновления массив обновляемых перечислителей.
Синтаксис
HRESULT CreateRefreshableEnum(
[in] IWbemServices *pNamespace,
[in] LPCWSTR wszClass,
[in] IWbemRefresher *pRefresher,
[in] long lFlags,
[in] IWbemContext *pContext,
[in] IWbemHiPerfEnum *pHiPerfEnum,
[out] long *plId
);
Параметры
[in] pNamespace
Указатель IWbemServices обратно на управление Windows, который может обслуживать любые запросы, сделанные поставщиком. Если pNamespace должен выполнить обратный вызов в управление Windows во время его выполнения, поставщик вызывает AddRef для этого указателя.
[in] wszClass
Константная строка, завершающаяся нулевым значением, из 16-разрядных символов Юникода, содержащая имя класса, экземпляры которого обновляются в параметре pHiPerfEnum .
[in] pRefresher
Указатель на объект IWbemRefresher , содержащий средство обновления, полученное путем вызова IWbemHiPerfProvider::CreateRefresher.
[in] lFlags
Зарезервировано. Этот параметр должен иметь значение 0 (ноль).
[in] pContext
Как правило, значение NULL; в противном случае — указатель на объект IWbemContext , необходимый одному или нескольким поставщикам динамических классов. Значения в объекте контекста должны быть указаны в документации конкретного поставщика. Дополнительные сведения об этом параметре см. в разделе Выполнение вызовов WMI.
[in] pHiPerfEnum
Указатель на объект IWbemHiPerfEnum , содержащий высокопроизводительное перечисление.
[out] plId
Указатель на целое число, возвращаемое поставщиком, которое однозначно идентифицирует обновляемое перечисление.
Возвращаемое значение
Этот метод возвращает HRESULT , указывающий состояние вызова метода. В следующем списке перечислены значения, содержащиеся в HRESULT.
Комментарии
Поставщик не должен изменять обновляемый перечислитель, кроме как во время операции обновления. Перечисление является мелким, поэтому все экземпляры, помещенные в перечислитель, должны быть класса, заданного wszClass.
Поставщик не должен обращаться к перечислительу, если WMI не вызовет метод IWbemRefresher::Refresh владельца. Как и в случае с обновляемыми объектами, поставщик не должен обновлять перечислитель, если объект, владеющий перечислителем, не обновит перечислитель.
Примеры
В следующем примере кода описывается реализация CreateRefreshableEnum.
HRESULT CHiPerfProvider::CreateRefreshableEnum(
/* [in] */IWbemServices *pNamespace,
/* [in] */LPCWSTR wszClass,
/* [in] */IWbemRefresher *pRefresher,
/* [in] */long lFlags,
/* [in] */IWbemContext *pCtx,
/* [in] */IWbemHiPerfEnum *pEnum,
/* [out] */ long *plId
)
{
// Use a private interface defined
// to talk with the refresher.
IMyRefresher* pMyRefr = NULL;
HRESULT hres = pRefresher->QueryInterface(
IID_IMyRefresher,
(void**) &pMyRefr );
if ( SUCCEEDED( hres ) )
{
LPLONG plLastId;
// Generates a unique identifier
*plId = InterlockedIncrement( &plLastId );
// Use an internal method to add the
// enumerator to an array.
pMyRefr->AddEnum( wszClass, *plId, pEnum );
pMyRefr->Release();
}
return hres;
}
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows Vista |
Минимальная версия сервера | Windows Server 2008 |
Целевая платформа | Windows |
Header | wbemprov.h (включая Wbemidl.h) |
Библиотека | Wbemuuid.lib |
DLL | Wmiprvsd.dll |
См. также раздел
Преобразование поставщика экземпляра в поставщик High-Performance