はじめまして。
GetDriveTypeを使用して、ドライブの種別を取得するメソッドを作成してます。
そこでUSB接続の外付けMOドライブに関して戻り値をみると、
ドライブにMOディスクが挿入の有無に関わらず、
『DRIVE_REMOVABLE』が戻されます。
かといって、内臓CD-ROMに関してはディスクの有無に関わらず、『DRIVE_CDROM』が戻り値として戻ってきます。
ここで、疑問なのは、戻り値『DRIVE_NO_ROOT_DIR』は、どのような状態の時に戻されるのか?ということです。
MSDNには*********************************
『DRIVE_NO_ROOT_DIR』
指定のルートディレクトリが存在しません。たとえば、パスにボリュームがマウントされていません(未フォーマットや、メディアが挿入されていないなど)。
*****************************************
という、記述があり、これであれば、メディアなしのCD-ROMドライブに関しては、『DRIVE_NO_ROOT_DIR』が戻されてもいいような、気がします。
内部で勝手に優先順位があるのでしょうか?
そもそも、『DRIVE_NO_ROOT_DIR』を戻り値とする事はできるのでしょうか?
開発に関する手詰まりでは、無いですが、ちょっと気になるので、
ご存知の方、解答いただければと思います。
推測するに、このAPIはデバイスドライバの持っている属性を返却してるだけで、
実際にディスクを読みに行ったりはしない(アクセスないことを確認済み)
USB-MSS なドライバは常に REMOVABLE を返すのでそう見えるだけ。
A:\ に対してはディスクのアクセスなしに REMOVABLE が帰ってきた
B:\ に対してはディスクのアクセスなしに NO_ROOT_DIR が帰ってきた
C:\ に対しては FIXED でしたし
WinXP でフォーマットした NTFS ドライブ (Win2K からは壊れて見える) も FIXED
USB-MSS は REMOVABLE でした。
>B:\ に対してはディスクのアクセスなしに NO_ROOT_DIR が帰ってきた
『DRIVE_NO_ROOT_DIR』が出た、B:\は何のドライブなのでしょうか?
どちらにせよ、MSDNの解説の「メディアが挿入されていないなど。。。」というコメントは偽りということなんですね、きっと。
>どちらにせよ、MSDNの解説の「メディアが挿入されていないなど。。。」というコメントは偽りということなんですね、きっと。
「たとえば」って付いてますが…
「たとえば」とついているのは、しってますよ。
その例としてあげるのには、不適格な感じがします。
これを使えば、メディアが挿入されているかチェックできると誤解をする人もいるでしょう。
いやだからMicrosoftの説明どおりですけど・・・どこに疑問があるのかがわからん。
「まいこんぴゅーた」に表示の出ないドライブ全てに対して NO_ROOT_DIR が帰ってきます。
最近のほとんど全てのコンピュータには B: が無いと思う。
ネットワークドライブとかに割り当ててなきゃ Z: も無いと思う。
[ルートディレクトリが無い]=「ドライブが無い」すなわち
x:\ のルートディレクトリパスにボリュームが割り当てられていない
ということ。
>未フォーマットや、メディアが挿入されていないなど
そんな記述は英語版MSDNにはありません。
疑義があったら日本語版ではなく必ず原文(Webの最新)を参照のこと。
The root path is invalid; for example, there is no volume is mounted at the path.
疑問は何も無いです。
私の常識ではBドライブは何もないですが、tetrapodさんのBドライブにあえて何かしら割り当ててあるのかと思ったから聞いてみただけです。
私の常識は、私の常識なので。
ありがとうございました。
注釈が増えているだけならまだ害は少ないが、
たまに誤訳で正反対の文章になってることがあるから。
自分は基本的に英語ドキュメントのほう読んでる。
ツイート | ![]() |