以下についてご指導を頂きたく、宜しくお願い致します。
環境
Windows 2000 Pro SP4
VB 6.0 SP6
内容
フォームから任意のボタン押下で
・使用されているデバイスの取得
・デバイス(USB)の取り外し
を行う。
現状
上記、内容は実現可能でしょうか。
調べていますが....(ToT)/~~~
可能であれば、参考となるサイト等を
教えていただければ助かります。
> ・使用されているデバイスの取得
> ・デバイス(USB)の取り外し
「ハードウェアの安全な取り外し」を必要としない USB デバイスも対象とするのでしょうか?
> 上記、内容は実現可能でしょうか。
とりあえず、CM_Request_Device_Eject について調べてみるとか。
http://msdn.microsoft.com/en-us/library/ms790831.aspx
ストレージデバイスの場合、書き込み終了後の遅延書き込み時間がある
ので、即、反映(フラッシュ)させたい場合は、Ejectさせる前に・・・
CreateFileでドライブを開き
DeviceIoControlで、FSCTL_LOCK_VOLUME を実行する。
この際にキャッシュに残っている情報がストレージに書き込まれる。
DeviceIoControlで、FSCTL_UNLOCK_VOLUMEを実行し、CloseHandle
してからEjectを実行する手順になります。
※ 遅延書き込みはデフォルトで5秒くらいだったような・・・
5秒待てばOS側の処理でフラッシュされますが・・・
待てないなら上記を実行!
ただし、どのみちFSCTL_LOCK_VOLUMEを実行した際、フラッシュ
が終わるまで命令がブロックされるので、大容量のバッファを
もったストレージの場合は、それなりの時間がかかります。
以上。参考まで
書き込み、ありがとうございます。
現段階では、USB接続されている全てのデバイスを取得し、
どこまで切り分けできるか確認したいと思っています。
ご指導して頂いた情報から、実現可能と思います。
後は、私のレベル次第かと...(^^ゞ
ある程度、時間が必要と思いますので、
とりあえず、解決とさせて頂きます。
ツイート | ![]() |