Bagikan melalui


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.

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

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

Mengembangkan Penyedia WMI

IWbemHiPerfProvider

Membuat Penyedia Instans menjadi Penyedia High-Performance

Penyedia Penghitung Kinerja

Menulis Penyedia Instans