6507842 ランダム
 ホーム | 日記 | プロフィール 【フォローする】 【ログイン】

ふるた技工所(てっこうしょ)

ふるた技工所(てっこうしょ)

【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! --/--
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x

PR

キーワードサーチ

▼キーワード検索

プロフィール

Aちゃん22

Aちゃん22

フリーページ

2007.09.20
XML
カテゴリ:ソフト開発日誌
ハードディスクを列挙する方法を探していたら enumcd (Microsoft support online) を見つけた。サンプルは光学ドライブを探すものだったけど、ハードディスクにも応用できる。

GUID_DEVCLASS_CDROM → GUID_DEVCLASS_DISKDRIVE, CdRomClassGuid → DiskClassGuid と書き換えれば、ハードディスクの列挙にすぐに使えそうなことが判明した。

SetupDiGetClassDevs, SetupDiGetDeviceInterfaceDetail, SetupDiDestroyDeviceInfoList が肝の API の様だ。DDK の中だけで定義してある API なので Delphi で使うには setupapi.h 相当のユニットを作り setupapi.dll とリンク出来るようにする必要がある。

enumcd にはちょっとしたバグがある DebugLevel=3 にすると、スタックオーバーフロー(じゃなかった、バッファオーバーフロー)で停止してしまう。DebugPrint() 関数の buffer[] 配列を大きくする必要がある。

ディスクドライブのパスは \\.\\PHYSICALDRIVE0 ではなく、次のように長い文字列として得られた。

\\?\scsi#disk&ven_maxtor_6&prod_v300f0#4&34024bf5&0&000000#{53f56307-b6bf-11d0-94f2-00a0c91efb8b}

このためスタックオーバーフロー(じゃなかった、バッファオーバーフロー)が起きていたようだ。
いま地道にヘッダ移植中だ。





お気に入りの記事を「いいね!」で応援しよう

最終更新日  2007.09.22 14:33:30
コメント(0) | コメントを書く
[ソフト開発日誌] カテゴリの最新記事


カレンダー

カテゴリ

サイド自由欄

コメント新着

クマノフ@ Re:秋月八潮店 カラーつまみ詰め放題 300 円 - 46 個入った(05/10) こんにちは 確か使用上の注意が出ていたと…
Aちゃん22@ Re[7]:ようやく転職エージェントに会うも - 3 分で終了(04/01) ご無沙汰してますさん、こんにちは、 反応…
ご無沙汰してます@ Re[6]:ようやく転職エージェントに会うも - 3 分で終了(04/01) Aちゃん22さんへ 調べて頂いて恐縮です。…
Aちゃん22@ Re[5]:ようやく転職エージェントに会うも - 3 分で終了(04/01) ご無沙汰してますさん、こんにちは。 思い…
ご無沙汰してます@ Re[4]:ようやく転職エージェントに会うも - 3 分で終了(04/01) Aちゃん22さんへ かなり昔のことですが、…

ニューストピックス


© Rakuten Group, Inc.