Bagikan melalui


Metode IWbemHiPerfProvider::CreateRefreshableObject (wbemprov.h)

Metode IWbemHiPerfProvider::CreateRefreshableObject meminta objek instans yang dapat disegarkan. WMI Refresher memanggil IWbemHiPerfProvider::CreateRefreshableObject sebagai respons terhadap permintaan klien ke antarmuka IWbemConfigureRefresher::AddObjectByPath atau IWbemConfigureRefresher::AddObjectByTemplate . Penyedia membaca kunci dari objek templat yang disediakan dan menyediakan objek dalam parameter ppRefreshable yang akan disegarkan setiap kali metode refresh pada pRefresher dipanggil. Penyedia mengaitkan objek yang dapat disegarkan dengan penyegaran yang disediakan, yang diperoleh dari panggilan sebelumnya ke IWbemHiPerfProvider::CreateRefresher.

Catatan Jika penyedia tidak menerapkan metode ini, penyedia harus mengembalikan WBEM_E_PROVIDER_NOT_CAPABLE.
 

Sintaks

HRESULT CreateRefreshableObject(
  [in]  IWbemServices     *pNamespace,
  [in]  IWbemObjectAccess *pTemplate,
  [in]  IWbemRefresher    *pRefresher,
  [in]  long              lFlags,
  [in]  IWbemContext      *pContext,
  [out] IWbemObjectAccess **ppRefreshable,
  [out] long              *plId
);

Parameter

[in] pNamespace

Pointer IWbemServices kembali ke Manajemen Windows, yang dapat melayani permintaan apa pun yang dibuat oleh penyedia. Jika pointer harus memanggil kembali ke WMI selama eksekusinya, penyedia memanggil AddRef di atasnya.

[in] pTemplate

Penunjuk ke objek IWbemObjectAccess yang berisi templat.

[in] pRefresher

Penunjuk ke objek IWbemRefresher yang berisi penyegaran yang diperoleh dengan memanggil IWbemHiPerfProvider::CreateRefresher.

[in] lFlags

Dicadangkan. Parameter ini harus berupa 0.

[in] pContext

Biasanya NULL; jika tidak, penunjuk ke objek IWbemContext yang diperlukan oleh satu atau beberapa penyedia kelas dinamis. Nilai dalam objek konteks harus ditentukan dalam dokumentasi penyedia tertentu. Untuk informasi selengkapnya tentang parameter ini, lihat Melakukan Panggilan ke WMI.

[out] ppRefreshable

Pointer yang menyimpan referensi ke objek IWbemObjectAccess , yang akan berisi objek yang dapat di-refresh.

[out] plId

Penunjuk ke bilangan bulat yang dikembalikan oleh penyedia yang secara unik mengidentifikasi objek yang dapat disegarkan ini.

Mengembalikan nilai

Metode ini mengembalikan HRESULT yang menunjukkan status panggilan metode. Daftar berikut mencantumkan nilai yang terkandung dalam HRESULT.

Keterangan

Templat instans yang disediakan akan berisi objek dengan properti kunci yang diisi. Objek yang dikembalikan harus menjadi objek unik yang dapat disegarkan. Penyedia tidak boleh menyentuh objek yang dapat di-refresh kecuali selama operasi penyegaran. Penyedia Anda tidak boleh mengakses objek yang dikembalikan, kecuali objek yang memiliki penyegar memulihkan objek. Properti utama templat instans yang disediakan akan diisi. Penyedia juga harus memvalidasi jalur instans.

Contoh

Contoh kode berikut menjelaskan cara mengimplementasikan 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;
}

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows Vista
Server minimum yang didukung Windows Server 2008
Target Platform Windows
Header wbemprov.h (termasuk Wbemidl.h)
Pustaka Wbemuuid.lib
DLL Wmiprvsd.dll

Lihat juga

Mengembangkan Penyedia WMI

IWbemHiPerfProvider

Membuat Penyedia Instans menjadi Penyedia High-Performance

Penyedia Penghitung Kinerja

Menulis Penyedia Instans