Metode IWbemHiPerfProvider::QueryInstances (wbemprov.h)
Metode IWbemHiPerfProvider::QueryInstances mengembalikan instans dari kelas yang ditentukan menggunakan instans IWbemObjectSink yang disediakan. Metode harus segera kembali. Antarmuka IWbemObjectSink digunakan untuk menentukan hasil.
Sintaks
HRESULT QueryInstances(
[in] IWbemServices *pNamespace,
[in] WCHAR *wszClass,
[in] long lFlags,
[in] IWbemContext *pCtx,
[in] IWbemObjectSink *pSink
);
Parameter
[in] pNamespace
Pointer IWbemServices kembali ke WMI yang dapat melayani permintaan apa pun dari penyedia. Penyedia harus memanggil AddRef pada pointer ini jika perlu memanggil kembali ke WMI selama eksekusi.
[in] wszClass
Penunjuk ke string WCHAR yang menentukan kelas yang instansnya dikembalikan.
[in] lFlags
Bilangan bulat yang berisi bendera.
[in] pCtx
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. Untuk informasi selengkapnya, lihat Melakukan Panggilan ke WMI.
[in] pSink
Arahkan ke implementasi IWbemObjectSink yang disediakan oleh klien ke salah satu metode asinkron IWbemServices.
Nilai kembali
Metode ini mengembalikan HRESULT yang menunjukkan status panggilan metode. Daftar berikut mencantumkan nilai yang terkandung dalam HRESULT.
Penyedia HiPerf dapat melaporkan keberhasilan atau kegagalan baik melalui kode pengembalian dari QueryInstances atau melalui panggilan ke metode SetStatuspResponseHandler. Jika Anda memanggil metode SetStatus , kode pengembalian yang dikirim melalui pResponseHandler lebih diutamakan daripada kode pengembalian QueryInstances .
Keterangan
WMI memanggil QueryInstances sebagai respons terhadap permintaan IWbemServices::CreateInstanceEnum atau IWbemServices::CreateInstanceEnumAsync .
Metode IWbemObjectSink::SetStatus dipanggil untuk menunjukkan akhir tataan hasil. Ketika kondisi kesalahan terjadi, IWbemObjectSink::SetStatus juga dapat dipanggil tanpa intervensi panggilan ke IWbemObjectSink::Menunjukkan.
Contoh
Contoh kode berikut menunjukkan cara mengimplementasikan QueryInstances.
HRESULT CMyHiPerfProvider::QueryInstances(
/* [in] */ IWbemServices* pNamespace,
/* [in] */ BSTR strClass,
/* [in] */ long lFlags,
/* [in] */ IWbemContext __RPC_FAR *pCtx,
/* [in] */ IWbemObjectSink __RPC_FAR *pSink
)
{
IWbemClassObject *pClass = 0;
IWbemClassObject *pNextInst = 0;
// The IWbemObjectSink interface must be
// implemented in a class that you define. You then
// must assign the pResponseHandler pointer
// an instance of the class that implements
// the IWbemObjectSink interface.
IWbemObjectSink* pResponseHandler = 0;
HRESULT hRes;
// Use the namespace pointer to retrieve a class
// definition.
hRes = pNamespace ->GetObject(strClass, 0, NULL, &pClass, 0);
if (WBEM_NO_ERROR==hRes)
return hRes;
// Now loop through the private source and create each instance.
for (int i = 0 ; i < NUM_OF_INSTANCES ; i++)
{
hRes = pClass->SpawnInstance(0, &pNextInst);
// Exit loop if no new instance is spawned
if (WBEM_S_FALSE == hRes)
break;
if(NULL!=pNextInst)
{
// Create the instance.
// For example, call a function (FillInst) that
// assigns a value to the pNextInst pointer.
/*FillInst(pNextInst);*/
// Deliver the class to WMI.
pResponseHandler->Indicate(1, &pNextInst);
pNextInst->Release();
pNextInst=NULL;
}
}
// Send a finish message to WMI.
pResponseHandler->SetStatus(0, WBEM_S_NO_ERROR, 0, 0);
// Free memory resources.
pNamespace->Release();
pClass->Release();
SysFreeString(strClass);
return WBEM_S_NO_ERROR;
}
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