Método IWbemHiPerfProvider::CreateRefreshableObject (wbemprov.h)
El método IWbemHiPerfProvider::CreateRefreshableObject solicita un objeto de instancia actualizable. El Actualizador WMI llama a IWbemHiPerfProvider::CreateRefreshableObject en respuesta a una solicitud de cliente a las interfaces IWbemConfigureRefresher::AddObjectByPath o IWbemConfigureRefresher::AddObjectByTemplate . El proveedor lee la clave del objeto de plantilla proporcionado y proporciona un objeto en el parámetro ppRefreshable que se actualizará cada vez que se llame al método refresh en pRefresher . El proveedor asocia el objeto actualizable con el actualizador proporcionado, obtenido de una llamada anterior a IWbemHiPerfProvider::CreateRefresher.
Sintaxis
HRESULT CreateRefreshableObject(
[in] IWbemServices *pNamespace,
[in] IWbemObjectAccess *pTemplate,
[in] IWbemRefresher *pRefresher,
[in] long lFlags,
[in] IWbemContext *pContext,
[out] IWbemObjectAccess **ppRefreshable,
[out] long *plId
);
Parámetros
[in] pNamespace
Un puntero IWbemServices a Administración de Windows, que puede atender cualquier solicitud realizada por el proveedor. Si el puntero debe volver a llamar a WMI durante su ejecución, el proveedor llama a AddRef en él.
[in] pTemplate
Puntero a un objeto IWbemObjectAccess que contiene la plantilla.
[in] pRefresher
Puntero a un objeto IWbemRefresher que contiene un actualizador obtenido mediante una llamada a IWbemHiPerfProvider::CreateRefresher.
[in] lFlags
Reservado. El valor de este parámetro deberá ser 0.
[in] pContext
Normalmente NULL; de lo contrario, un puntero a un objeto IWbemContext requerido por uno o varios proveedores de clases dinámicas. Los valores del objeto de contexto deben especificarse en la documentación del proveedor específico. Para obtener más información sobre este parámetro, vea Realizar llamadas a WMI.
[out] ppRefreshable
Puntero que contiene la referencia a un objeto IWbemObjectAccess , que contendrá el objeto actualizable.
[out] plId
Puntero a un entero devuelto por el proveedor que identifica de forma única este objeto actualizable.
Valor devuelto
Este método devuelve un valor HRESULT que indica el estado de la llamada al método. En la lista siguiente se muestra el valor contenido en un HRESULT.
Comentarios
La plantilla de instancia proporcionada contendrá un objeto con las propiedades de clave rellenadas. El objeto devuelto debe ser un objeto único actualizable. El proveedor no debe tocar el objeto actualizable, excepto durante una operación de actualización. El proveedor no debe tener acceso al objeto devuelto, a menos que el objeto propietario del actualizador restaure el objeto. Se rellenarán las propiedades clave de la plantilla de instancia proporcionada. El proveedor también debe validar la ruta de acceso de la instancia.
Ejemplos
En el ejemplo de código siguiente se describe cómo implementar 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;
}
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows Vista |
Servidor mínimo compatible | Windows Server 2008 |
Plataforma de destino | Windows |
Encabezado | wbemprov.h (include Wbemidl.h) |
Library | Wbemuuid.lib |
Archivo DLL | Wmiprvsd.dll |
Consulte también
Desarrollo de un proveedor WMI
Conversión de un proveedor de instancias en un proveedor de alto rendimiento