Метод IWbemHiPerfProvider::CreateRefreshableObject (wbemprov.h)
Метод IWbemHiPerfProvider::CreateRefreshableObject запрашивает обновляемый объект экземпляра. Средство обновления WMI вызывает IWbemHiPerfProvider::CreateRefreshableObject в ответ на запрос клиента к интерфейсам IWbemConfigureRefresher::AddObjectByPath или IWbemConfigureRefresher::AddObjectByTemplate . Поставщик считывает ключ из предоставленного объекта шаблона и предоставляет объект в параметре ppRefreshable , который будет обновляться при каждом вызове метода refresh в pRefresher . Поставщик связывает обновляемый объект с предоставленным средством обновления, полученным из предыдущего вызова IWbemHiPerfProvider::CreateRefresher.
Синтаксис
HRESULT CreateRefreshableObject(
[in] IWbemServices *pNamespace,
[in] IWbemObjectAccess *pTemplate,
[in] IWbemRefresher *pRefresher,
[in] long lFlags,
[in] IWbemContext *pContext,
[out] IWbemObjectAccess **ppRefreshable,
[out] long *plId
);
Параметры
[in] pNamespace
Указатель IWbemServices обратно на управление Windows, который может обслуживать любой запрос, сделанный поставщиком. Если указатель должен вызвать WMI во время его выполнения, поставщик вызывает AddRef для него.
[in] pTemplate
Указатель на объект IWbemObjectAccess , содержащий шаблон.
[in] pRefresher
Указатель на объект IWbemRefresher , содержащий средство обновления, полученное путем вызова IWbemHiPerfProvider::CreateRefresher.
[in] lFlags
Зарезервировано. Этот параметр должен иметь значение 0.
[in] pContext
Как правило, значение NULL; в противном случае — указатель на объект IWbemContext , необходимый одному или нескольким поставщикам динамических классов. Значения в объекте контекста должны быть указаны в документации конкретного поставщика. Дополнительные сведения об этом параметре см. в разделе Выполнение вызовов WMI.
[out] ppRefreshable
Указатель, содержащий ссылку на объект IWbemObjectAccess , который будет содержать обновляемый объект.
[out] plId
Указатель на целое число, возвращенное поставщиком, которое однозначно идентифицирует обновляемый объект.
Возвращаемое значение
Этот метод возвращает HRESULT , указывающий состояние вызова метода. В следующем списке перечислены значения, содержащиеся в HRESULT.
Комментарии
Предоставленный шаблон экземпляра будет содержать объект с заполненными свойствами ключей. Возвращаемый объект должен быть уникальным обновляемым объектом. Поставщик не должен касаться обновляемого объекта, кроме как во время операции обновления. Поставщик не должен обращаться к возвращенному объекту, если объект, владеющий средством обновления, не восстановит объект . Будут заполнены ключевые свойства предоставленного шаблона экземпляра. Поставщик также должен проверить путь к экземпляру.
Примеры
В следующем примере кода описывается реализация CreateRefreshableObject.
HRESULT CMyHiPerfProvider::CreateRefreshableObject(
/* [in] */IWbemServices *pNamespace,
/* [in] */IWbemObjectAccess *pTemplate,
/* [in] */IWbemRefresher *pRefresher,
/* [in] */long lFlags,
/* [in] */IWbemContext *pCtx,
/* [out] */IWbemObjectAccess **ppRefreshable,
/* [out] */ long *plId
)
{
// Use a private interface defined
// to talk with the refresher. You must define
// the IMyRefresher interface.
IMyRefresher* pMyRefr = NULL;
HRESULT hres = pRefresher->QueryInterface(
IID_IMyRefresher,
(void**) &pMyRefr );
if ( SUCCEEDED( hres ) )
{
// Check for a valid instance.
// You must implement the ValidateInst function.
if ( ValidateInst( pTemplate ) )
{
IWbemClassObject* pTemplateObj = NULL;
IWbemClassObject* pCloneObj = NULL;
IWbemObjectAccess* pCloneAcc = NULL;
// Clone the object, then get an
// IWbemObjectAccess pointer.
pTemplate->QueryInterface(
IID_IWbemClassObject,
(void**) &pTemplateObj );
pTemplateObj->Clone( &pCloneObj );
pCloneObj->QueryInterface(
IID_IWbemObjectAccess,
(void**) &pCloneAcc );
// Generate a unique identifier.
// For example, use:
/**plId = InterlockedIncrement( &m_lLastId );*/
// Add the object to an array of
// objects to refresh.
//For example, use:
/*pMyRefr->AddInstance( *plId, pCloneAcc );*/
// Maintains AddRef from QI
*ppRefreshable = pCloneAcc;
pTemplateObj->Release();
pCloneObj->Release();
}
else
{
hres = WBEM_E_NOT_FOUND;
}
pMyRefr->Release();
}
return hres;
}
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows Vista |
Минимальная версия сервера | Windows Server 2008 |
Целевая платформа | Windows |
Header | wbemprov.h (включая Wbemidl.h) |
Библиотека | Wbemuuid.lib |
DLL | Wmiprvsd.dll |
См. также раздел
Преобразование поставщика экземпляра в поставщик High-Performance