2010/8/22:本掲示板は閲覧専用です。データが一部破損しておりますがご了承ください。
  新規投稿 ┃ツリー表示 ┃スレッド表示 ┃一覧表示 ┃トピック表示 ┃番号順表示 ┃検索 ┃設定 ┃過去ログ ┃ホーム  
1866 / 3573 ←次へ | 前へ→

Re:解決しました。
←back ↑menu ↑top forward→
 ひよひよ  - 08/4/7(月) 20:28 -

引用なし
パスワード
   ▼ひよひよさん:
>▼HGST使い?さん:
>アドバイスありがとうございました。
>おかげさまで、VisualC++ から情報が取得できるところまでたどり着きました。
>
>後ほど VisualC++ の実装例を提示させていただきます。

初期化部他は CrystalDiskInfo のソースコード参照のこと

以下重要ポイントだけ。
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);
}
IWbemContext *pCtx = 0;
IWbemCallResult *pResult = 0;
mapping.Format(_T("Win32_LogicalDiskToPartition.Antecedent=\"Win32_DiskPartition.DeviceID=\\\"%s\\\"\",Dependent=\"Win32_LogicalDisk.DeviceID=\\\"%s\\\"\""),
partition, disk);
pIWbemServices->GetObject((BSTR)mapping.GetString(), 0, pCtx, &pCOMDev2, &pResult);
if(pCOMDev2)
{
CString cstr;
cstr.Format(_T("キタコレ:%s %s"), partition, disk);
AfxMessageBox(cstr);
}
}
}

随分悩まされた問題ですがようやく解決しました。HGST使い?さんをはじめアドバイスくださった皆様に感謝いたします。
98 hits

ERROR:該当するツリーデータを読み込めませんでした。

1866 / 3573 ←次へ | 前へ→
  新規投稿 ┃ツリー表示 ┃スレッド表示 ┃一覧表示 ┃トピック表示 ┃番号順表示 ┃検索 ┃設定 ┃過去ログ ┃ホーム  
ページ:  ┃  記事番号:   
98287
(SS)C-BOARD v3.8(とほほ改ver2.1) is Free