![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
No.1ベストアンサー
- 回答日時:
方法 (1)
WMI ( Windows Management Instrumentation ) を使ってこれらを
関連付けする方法はどうでしょうか?
WQL 文
SELECT * from Win32_LogicalDiskToPartition
結果
Antecedent: \\hostname\root\cimv2:Win32_DiskPartition.DeviceID="Disk #0, Partition #0"
Dependent: \\hostname\root\cimv2:Win32_LogicalDisk.DeviceID="C:"
(略)
WQL 文
SELECT * from Win32_DiskDriveToDiskPartition
結果
Antecedent: \\hostname\root\cimv2:Win32_DiskDrive.DeviceID="\\\\.\\PHYSICALDRIVE0"
Dependent: \\hostname\root\cimv2:Win32_DiskPartition.DeviceID="Disk #0, Partition #0"
(略)
WMI を VC++ からお使いに方法については以下の URL をご参照ください。
WMI C++ Application Examples (Windows)
http://msdn2.microsoft.com/en-us/library/aa39455 …
WQL (SQL for WMI) (Windows)
http://msdn2.microsoft.com/en-us/library/aa39460 …
CodeProject Making WMI Queries In C++. Free source code and programming help
http://www.codeproject.com/KB/system/UsingWMI.aspx
方法 (2)
ドライブ情報を取得するツールがベクターにあり、この方法は WMI を使いません。
ソースも同梱されています。
volumeinfo displays the Volume Infomations.
http://www.vector.co.jp/soft/dl/winnt/util/se328 …
※ \\.\PHYSICALDRIVE0 ではなく WIN32API の QueryDosDevice で
取得できる \Device\HardDiskVolume0 ですが。
蛇足にしかなりませんが。
CLI を使ったマネージドコードならこれだけで呼び出すことが可能です。
※ 処理に時間がかかります。
----------------
// 参照追加 System.Management
// using namespace System::Management;
System::String^ logdrv_to_phydev(System::String^ drive)
{
System::String^ strClassName = "Win32_LogicalDisk='" + drive->Trim()->Substring(0,1) + ":'";
ManagementObject^ mo = gcnew ManagementObject(strClassName);
for each (ManagementObject^ mo1 in mo->GetRelated("Win32_DiskPartition"))
{
for each (ManagementObject^ mo2 in mo1->GetRelated("Win32_Diskdrive"))
return mo2["Name"]->ToString();
}
}
----------------
// 呼出例
// 結果: \\.\PHYSICALDRIVE0
Console::WriteLine(logdrv_to_phydev("C"));
----------------
この回答へのお礼
お礼日時:2008/03/29 16:31
WMIに関する情報を検索することで、DeviceIoControlとIOCTL_STORAGE_QUERY_PROPERTYの組み合わせでも番号を取得できることがわかりました。ご回答いただき、ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- UNIX・Linux VirtualBox ゲストOSにPC内蔵HDDのパーティションをマウントする方法は? 2 2023/05/06 22:52
- Visual Basic(VBA) エクセルVBA 2 2022/04/27 13:29
- ドライブ・ストレージ 複数のパソコンが自宅にあり、それらのパソコンの固有のHD、光学ドライブを相互にアクセスする方法は? 5 2022/12/14 13:31
- USBメモリー・SDカード・フラッシュメモリー 銀行が振込データの受け渡しに未だにFDを使っている理由は「FDDがAドライブ固定だから」って本当? 11 2022/06/02 03:53
- その他(職業・資格) 【資格】あらゆる資格(国家資格・民間資格)の強さの格付けランキングを作ってみました! 4 2023/02/11 16:56
- Visual Basic(VBA) outlook マクロが終了しません。 1 2022/09/02 11:14
- その他(プログラミング・Web制作) 【GAS】Gmail本文をブラウザ表示された状態でPDFにしたいです 1 2022/12/12 09:54
- Windows 10 ドライブとボリューム 6 2022/10/25 18:38
- Visual Basic(VBA) 貼り付けた値が消えていく 以下はソースファイルの2番目のシートのB6から最終行を取得 ターゲットファ 2 2023/07/27 12:23
- Windows 10 Win10 リカバリディスク作成出来ない 回復パーティションが未割り当て??? 4 2022/11/24 21:31
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「取得先」という表現について
-
Yahoo! JAPAN IDを新規取得でき...
-
ps3で久しぶりにCDの音楽情報取...
-
Webページのテキスト文字を取得...
-
表示している画面サイズの取得方法
-
自分の掲示板にアクセス解析を...
-
perl LWPでURLにアクセスした時...
-
IPアドレスとMACアドレスを取得...
-
Wordでウィンドウハンドル(Hwn...
-
新刊情報の取得について
-
PHP の cURL で、htmlを画像へ...
-
VB+SQLserverでRecordCount問題
-
ローカルのコンピュータ名を取...
-
【C#】FindWindowExの使い方を...
-
VBAでPDFのアクティブページ番...
-
VB.NETで他のアプリが完全に起...
-
VBS「開いているページ」のURL...
-
format関数について
-
(Win32)ファイルパスから物理ド...
-
ミュージックのアートワークを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「取得先」という表現について
-
Yahoo! JAPAN IDを新規取得でき...
-
ps3で久しぶりにCDの音楽情報取...
-
IPアドレスとMACアドレスを取得...
-
format関数について
-
Excel VBA:特定の文字列以降(...
-
【VBA】EXCELブックを開かずに...
-
EXCEL、マクロ-改ページ行番号...
-
ローカルのコンピュータ名を取...
-
【C#】FindWindowExの使い方を...
-
VBAでPDFのアクティブページ番...
-
ミュージックのアートワークを...
-
VBS「開いているページ」のURL...
-
VB or VBScriptでPCの製造番号...
-
VBAでPDFファイルの文書のプロ...
-
表示している画面サイズの取得方法
-
積立投資してます。現在平均取...
-
アクセスの度にIPアドレスを変...
-
各クライアントマシンのログイ...
-
VB.NETでボリュームを取得・設...
おすすめ情報