Aracılığıyla paylaş


WMI'ye Çağrılar Yapmak

Sağlayıcılar, WMI tarafından uygulanan yöntemleri kendi yöntem uygulamalarından çağırabilir. Ancak, bir sağlayıcı aynı yöntemin kendi uygulaması içinden bir IWbemServices yönteminin WMI uygulamasını çağırdığında dikkat edilmesi gereken özel noktalar vardır. Sağlayıcının yöntemin zaman uyumlu veya zaman uyumsuz sürümünü çağırıp çağırmadığına bakılmaksızın bu önemli noktalar önemlidir.

Her IWbemServices yöntemi, bir sağlayıcının uygulayabileceği ve IWbemContext arabirimi uygulamasına yönelik bir işaretçiye sahip olan bir pCtx parametresine sahiptir. WMI sağlayıcıyı çağırdığında, WMI bu parametreye geçerli bir işaretçi geçirir. Sağlayıcının her zaman, isteklere hizmet verirken yaptığı WMI çağrılarında aynı işaretçiyi geçirmesi gerekir. pCtx uygun şekilde ayarlanmasının ihmal edilmesi WMI'nin sonsuz bir döngü başlatmasına neden olabilir.

Aşağıdaki kod örneği, GetObjectAsyncuygulamasının içinden GetObject WMI uygulamasını çağırmanın doğru yolunu gösterir.

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);
}

Bu konudaki C++ kod örneğinin doğru derlenmesi için aşağıdaki başvurulara ve #include deyimlerine ihtiyaç vardır.

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

Örnek, sınıf ve özellik sağlayıcıları, okuma isteğine hizmet verirken verilerin değiştirilmesini isteyen WMI çağrısı yapmamalıdır. Bu kurala istisna olan tek sağlayıcılar itme sağlayıcılarıdır. Gönderme sağlayıcısı, verileri WMI deposunda depolayan ve istemcilerden gelen istekleri işlemek için WMI'yi kullanan bir sınıf sağlayıcısıdır. Bir gönderme sağlayıcısı okuma isteğine hizmet verirken WMI deposunu güncelleştirebilir, ancak lFlags parametresini uygun IWbemServices çağrısında WBEM_FLAG_OWNER_UPDATE olarak ayarlaması gerekir.

Olay sağlayıcıları bir çağrıya hizmet verirken sınıf değişikliği yapmamalıdır. Ayrıca, olay filtresini değiştirme gibi olayla ilgili çağrıları da düzenleyemezler.

WMI Sağlayıcısı geliştirme

Ad Alanı Güvenlik Tanımlayıcılarını Ayarlama

Sağlayıcınızın Güvenliğini Sağlama