Compartir a través de


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.

Nota Si un proveedor no implementa este método, debe devolver WBEM_E_PROVIDER_NOT_CAPABLE.
 

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

IWbemHiPerfProvider

Conversión de un proveedor de instancias en un proveedor de alto rendimiento

Proveedor de contador de rendimiento

Escritura de un proveedor de instancias