 HRESULT hres;
 
 hres = CoInitializeEx(NULL,COINIT_MULTITHREADED);
 if(FAILED(hres)){
  printf("Failed to call CoInitializeEx\n");
  return 1;
 }
 
 hres = CoInitializeSecurity(NULL,-1,NULL,NULL,RPC_C_AUTHN_LEVEL_DEFAULT,RPC_C_IMP_LEVEL_IMPERSONATE,NULL,EOAC_NONE,NULL);
 if(FAILED(hres)){
  printf("Failed to call CoInitializeEx\n");
  return 1;
 }
 
 IWbemLocator *pLoc = NULL;
 hres = CoCreateInstance(CLSID_WbemLocator,0,CLSCTX_INPROC_SERVER,IID_IWbemLocator,(LPVOID *)&pLoc);
 if(FAILED(hres)){
  printf("Failed to call CoCreateInstance\n");
  return 1;
 }
 
 IWbemServices *pSVC = NULL;
 hres = pLoc->ConnectServer(_bstr_t(L"ROOT\\WMI"),NULL,NULL,0,NULL,0,0,&pSVC);
 if(FAILED(hres)){
  printf("Failed to call pLoc->ConnectServer\n");
  return 1;
 }

 hres = CoSetProxyBlanket(pSVC,RPC_C_AUTHN_WINNT,RPC_C_AUTHZ_NONE,NULL,RPC_C_AUTHN_LEVEL_CALL,RPC_C_IMP_LEVEL_IMPERSONATE,NULL,EOAC_NONE);
 if(FAILED(hres)){
  printf("Failed to call CoSetProxyBlanket\n");
  return 1;
 }
 
 IWbemClassObject *pclsObj = NULL;
 hres = pSVC->GetObject(_bstr_t(L"DemoWMIData"),0,NULL,&pclsObj,NULL);
 if(FAILED(hres)){
  printf("Failed to call pSVC->GetObject\n");
  return 1;
 }
 
 IWbemClassObject *pinObj = NULL;
 hres = pclsObj->SpawnInstance(0,&pinObj);
 if(FAILED(hres)){
  printf("Failed to call pclsObj->SpawnInstance\n");
  return 1;
 }
 
 VARIANT vProp;
 VariantInit(&vProp);
 vProp.vt = VT_I4;
 vProp.lVal = 50;
 hres = pinObj->Put(L"Data",0,&vProp,0);        //^hresèS~AWSxxoSQ
 if(FAILED(hres)){
  printf("Failed to call pinObj->Put\n");
  return 1;
 }
 VariantClear(&vProp);

 return 0;
 
--------
HUOڪMOFɡC
 
[WMI,
Dynamic,
Provider("WmiProv"),
Locale("MS\\0x409"),
Description("DemoWMIData used for Query and Set"),
guid("{39142400-C6A3-40fa-BADB-8A2652834100}")
]
class DemoWMIData
{
 [key, read]
 string InstanceName;
 
 [read]
 boolean Active;
 
 [WmiDataId(1), read, write,Description("used for Parameter")]
 uint32 Data;
};
