Megosztás a következőn keresztül:


Hívások indítása a WMI-hez

A szolgáltatók a WMI által implementált metódusokat a saját metódusimplementációikból hívhatják meg. Vannak azonban különleges szempontok, amikor egy szolgáltató meghívja egy IWbemServices metódus WMI-implementációját ugyanazon módszer saját implementációjából. Ezek a szempontok attól függetlenül fontosak, hogy a szolgáltató meghívja-e a metódus szinkron vagy aszinkron verzióját.

Minden IWbemServices metódus, amelyet a szolgáltató implementálhat, egy pCtx paraméterrel rendelkezik, amely egy IWbemContext felületi implementációra mutat. Amikor a WMI meghívja a szolgáltatót, a WMI egy érvényes mutatót ad át ebben a paraméterben. A szolgáltatónak mindig ugyanazt a mutatót kell átadnia a WMI-nek küldött hívások során, amelyeket a kérések kiszolgálása közben kezdeményeznek. Ha figyelmen kívül hagyja pCtx megfelelő beállítását, a WMI végtelen hurkot indíthat el.

Az alábbi példakód bemutatja, hogyan hívhatja meg a GetObject WMI-implementációját a GetObjectAsyncimplementációjából.

STDMETHODIMP CClassProv::GetObjectAsync (BSTR ObjectPath,
    long lFlags, IWbemContext *pCtx,
    IWbemObjectSink *pHandler)
{
  IWbemClassObject *pclObj = NULL;
  IWbemServices* m_pNamespace;
  HRESULT hr = m_pNamespace->GetObject(
      _bstr_t(L"AClass"), 0, pCtx, &pclObj, 
      NULL );
  pclObj->Release();
  return pHandler->SetStatus(0, hr, NULL, NULL);
}

A jelen témakör C++ kódjának példájához a következő hivatkozásokra és #include utasításokra van szükség a helyes fordításhoz.

#define _WIN32_DCOM
#include <iostream>
using namespace std;
#include <comdef.h>
#include <Wbemidl.h>
#pragma comment(lib, "wbemuuid.lib")

A példány-, osztály- és tulajdonságszolgáltatók nem adhatnak ki olyan hívásokat a WMI-nek, amely az olvasási kérések karbantartása során kéri az adatok módosítását. A szabály alól csak a push szolgáltatók jelentenek kivételt. A leküldéses szolgáltató egy osztályszolgáltató, amely adatokat tárol a WMI-adattárban, és a WMI-re támaszkodik az ügyfelektől érkező kérések kezeléséhez. Az olvasási kérelmek kezelése közben a leküldéses szolgáltató frissítheti a WMI-adattárat, de az lFlags paramétert úgy kell beállítania, hogy az WBEM_FLAG_OWNER_UPDATE legyen a megfelelő IWbemServices hívásnál.

Az eseményszolgáltatók nem módosíthatják az osztályt a hívás kezelése közben. Nem tudnak eseményhez kapcsolódó hívásokat kibocsátani, például nem tudják módosítani az eseményszűrőt.

WMI-szolgáltató fejlesztése

Namepace biztonsági leírók beállítása

szolgáltatói biztonságossá tétele