掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
USB認識完了を取得するには? (ID:141997)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
DBT_DEVICEARRIVALを受信した折、そのUSBメモリが、どのドライブレター にマウントされたかは取得できていますよネ? で、そのドライブが準備できたか簡単に検査したいなら・・・ CreateFileで開けば本当に準備完了すればエラーしません。開けます。 逆に準備完了していなければGetLastErrorしてエラーコード見れば解りま すので、エラーが無くなるまである一定時間ループして待つとか。 認識中に抜いたら・・・DBT_DEVICEREMOVECOMPLETEが受信されるので、同 じドライブレターならCreateFileの待ちループを抜けるとか・・・ あと、DBT_DEVICEARRIVALを受信した折に、RegisterDeviceNotification 使ってデバイスの状態監視を登録すれば、抜いた折、イベント発生して、 そのタイミングが取れるので・・・ 結局、何がしたいのか解らないのですが、どうにでもできるように思いま すが・・・デバイスの出現と消滅の監視を行いたいだけなら、特に問題は ないかと。 ただ、DBT_DEVICEARRIVALを受信した直後には、まだ本当にそのデバイスが 正常に動作していない場合がある・・・と言うことをどうやって知るか? と言うことのみかと。 因みにプログラムからそのUSBメモリのデバイスの取り外しも制御できます し、アンインストールもできます。またアンインストールした場合は、そ のUSBメモリを抜かないままデバイスのリスキャンで再認識も可能です。 デバイスの取り外しを実行した後は、物理的に抜かないと再認識はできま せん・・・これだけ厄介・・・ RegisterDeviceNotification/UnregisterDeviceNotification CreateFile/CloseHandle/DeviceIoControl SetupDiGetClassDevs/SetupDiEnumDeviceInterfaces SetupDiGetDeviceInterfaceDetail/SetupDiDestroyDeviceInfoList CM_Request_Device_Eject/CM_Locate_DevNode_Ex CM_Reenumerate_DevNode_Ex/CM_Disconnect_Machine これらのAPIの組み合わせで、できてしまいます。 勉強だと思ってAPI調べてみて下さい。 参考まで・・・
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.