|
▼HGST使い?さん:
>>解決法ないかなーと色々調べたらそのものズバリなやり取りが。
http://groups.google.co.jp/group/microsoft.public.【URL短縮沸:C-BOARD】o
>>参考になれば。
>おぉおぉ〜、これはそのものずばりですね。ありがとうございます。
残念ながら WSH -> C++ を簡単に出来ませんでした。WSH と C++ に精通した方々のアドヴァイスお待ちしております。基本的には、置き換えるだけのはずなのですが…。
pIWbemServices->ExecQuery(SysAllocString(L"WQL"),
SysAllocString(L"select * from win32_LogicalDisk where drivetype = 3"), 0, NULL, &pEnumCOMDevs);
while(pEnumCOMDevs && SUCCEEDED(pEnumCOMDevs->Next(2000, 1, &pCOMDev, &uReturned)) && uReturned == 1)
{
CString disk, partition, drive, mapping;
VARIANT pVal;
VariantClear(&pVal);
if(pCOMDev->Get(L"DeviceID", 0L, &pVal, NULL, NULL) == WBEM_S_NO_ERROR && pVal.vt > VT_NULL)
{
disk = pVal.bstrVal;
VariantClear(&pVal);
}
pIWbemServices->ExecQuery(SysAllocString(L"WQL"),
SysAllocString(L"SELECT * FROM Win32_DiskPartition"), 0, NULL, &pEnumCOMDevs2);
while(pEnumCOMDevs2 && SUCCEEDED(pEnumCOMDevs2->Next(2000, 1, &pCOMDev, &uReturned)) && uReturned == 1)
{
VariantClear(&pVal);
if(pCOMDev->Get(L"DeviceID", 0L, &pVal, NULL, NULL) == WBEM_S_NO_ERROR && pVal.vt > VT_NULL)
{
partition = pVal.bstrVal;
VariantClear(&pVal);
}
// ここからが問題... 何かが違う。何かが。
mapping.Format(_T("Win32_LogicalDiskToPartition.Antecedent=\'%s\',Dependent=\'%s\'"),
disk, partition);
pIWbemServices->GetObject((BSTR)mapping.GetString(), 0, NULL, &pCOMDev2, NULL);
VariantClear(&pVal);
if(pCOMDev2 && pCOMDev2->Get(L"DeviceID", 0L, &pVal, NULL, NULL) ==
WBEM_S_NO_ERROR && pVal.vt > VT_NULL)
{
drive = pVal.bstrVal;
VariantClear(&pVal);
}
}
}
|
|