Project

General

Profile

Bug #13254

Updated by Anonymous about 7 years ago

## 概要 
 windows 10で使用しています。 
 sdカードリーダーにメディアを差していない状態で、同ドライブに Dir.exist? などを行うと、次のメッセージダイアログが表示されスクリプトの実行が一時停止します。 
 「キャンセル」か「続行」を2回クリックするとスクリプトが再開し、Dir.exist? であれば false を返します。 

 ~~~ 
 --------------------------- 
 ruby.exe - ディスクがありません 
 --------------------------- 
 ドライブにディスクがありません。 ディスクをドライブ H: に挿入してください。  
 --------------------------- 
 キャンセル     再実行(T)     続行(C)    
 --------------------------- 
 ~~~ 

 ## 期待する動作 
 現状では手動操作が必要になるため、メッセージダイアログが表示されないこと、一時停止しないことを期待します。 

 ## 手元での再現手順1 手元での再現手順 
 1) sdカードリーダーをusbにつなぎ、sdカードをセットします。 メディアを差していないsdカードリーダーをusbにつなぎます。 
 2) タスクトレイの「ハードウェアを安全に取り外してメディアを取り出す」からカードをアンマウントし、 
  sdカードおよびカードリーダーを取り外します。 
 3) メディアを差していないsdカードリーダーをusbにつなぎます。 
 4) コマンドプロンプトで diskpart から list volume すると次の状態になっています。H: がカードリーダーです。 

 ~~~ 
   Volume ###    Ltr Label          Fs      Type          Size       Status       Info 
   ----------    --- -----------    ----    ----------    -------    ---------    -------- 
   Volume 0       E                         DVD-ROM           0 B    メディアなし 
   Volume 1       D                  NTFS     Partition      931 GB    正常 
   Volume 2           システムで予約済み      NTFS     Partition       85 MB    正常           システム 
   Volume 3       C                  NTFS     Partition      111 GB    正常           ブート 
   Volume 4                        NTFS     Partition      450 MB    正常           非表示 
   Volume 5       H                         リムーバブル            0 B    メディアなし 
 ~~~ 

 5) 3) irb でいくつか試すと以下のようになります。 

 ~~~ 
 irb(main):001:0> Dir.exist?("h:") 
 # 注:ここでダイアログが表示されます。閉じると次に進みます。 
 => false 
 irb(main):002:0> File.stat("h:") 
 # 注:ここでダイアログが表示されます。閉じると次に進みます。 
 Errno::ENXIO: No such device or address @ rb_file_s_stat - h: 
         from (irb):2:in `stat' 
         from (irb):2 
         from c:/ruby/bin/irb.cmd:19:in `<main>' 
 irb(main):003:0> File.directory?("h:") 
 # 注:ここでダイアログが表示されます。閉じると次に進みます。 
 => false 
 ~~~ 

 ## 手元での再現手順2 
 DVD ドライブの場合です。ダイアログは3回クリックすると閉じます。 
 a) DVD ドライブにディスクをセットします。 
 b) ディスクを取り出します。 
 c) irb での実行結果は以下のようになります。 

 ~~~ 
 irb(main):001:0> Dir.exist?("e:") 
 # 注:ここでダイアログが表示されます。閉じると次に進みます。 
 => false 
 irb(main):002:0> File.stat("e:") 
 # 注:ここでダイアログが表示されます。閉じると次に進みます。 
 Errno::EINVAL: Invalid argument @ rb_file_s_stat - e: 
         from (irb):2:in `stat' 
         from (irb):2 
         from c:/ruby/bin/irb.cmd:19:in `<main>' 
 irb(main):003:0> File.directory?("e:") 
 # 注:ここでダイアログが表示されます。閉じると次に進みます。 
 => false 
 ~~~ 4) 空の DVD-ROM ドライブに同じ事をしても、ダイアログが表示されることはありません。

Back