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.
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
Membuat Penyedia Instans menjadi Penyedia High-Performance