none
「メモリーカードの安全な取り外し」方法 RRS feed

  • 質問

  • マルチカードリーダー(USB接続)を使用した場合の、メモリーカード自体の取り外し方法が分かりません。
    デバイスの取り外しのプログラムでは、カードリーダー本体を切り離してしまう為、メモリーカードを
    再接続する為にはカードリーダ本体を、一度PCから外さないと再認識してくれないので、これでは使い
    勝手が悪いので困っています。
    メモリーカードだけを安全に取り外すには、どうすればいいのでしょうか?
    勿論、メモリーカードが取り外しが可能かどうかの判定も必要です。
    よろしくお願い致します。

    2007年12月14日 1:23

回答

  • >エクスプローラで、取り外しの処理ができるんです。
    >ですから、Windowsにその機能があるのではないかと思っています。

     

    他にも方法があるとは思いますが、Win32APIのDeviceIOControlを使うのが普通です。

    コントロールコードにIOCTL_STORAGE_EJECT_MEDIAを使ってください。

     

    下記、参考にどうぞ。

    http://support.microsoft.com/kb/165721/en-us

    2007年12月14日 4:45
  • たしかに「ハードウェアの安全な取り外し」してしまうとUSB挿しなおしになりますが、

    エクスプローラからドライブを右クリックして「取り出し」だと、メディアの挿しなおしで認識しませんか?

    ※うちのではそうなります。

     

    で、調べてみると IOCTL_STORAGE_EJECT_MEDIA というのがありますね。

    http://support.microsoft.com/kb/165721/ja

     

    こんな回答で合ってますか?

     

     

    2007年12月14日 4:49

すべての返信

  •  しげくん さんからの引用

    メモリーカードだけを安全に取り外すには、どうすればいいのでしょうか?
    勿論、メモリーカードが取り外しが可能かどうかの判定も必要です。
    よろしくお願い致します。

     

    えーと、この質問の仕方だとプログラムにどう繋がるのかが解りにくいので

    できれば、もっと直接的にわかるようにお願いします。

    メモリーカードだけを取り外す事ができるようにするためのプログラムを作りたいが、

    どのようにしたら良いのかと言う話になるんでしょうか?

     

    この部分に関してはどちらかと言うとカードリーダー側の仕様になるのではないかなと言う気がします。

    ちなみに私が使っているマルチカードリーダーは添付のソフトで対象のカードだけを取り外し可能に出来ます。

    マルチカードリーダー上にそれぞれのスロット用のランプと本体用のランプが有り、

    ランプが消えていれば取り外し可能とわかるようになっています。

    本体の取り外しが可能かどうかも本体用のランプで確認できます。

    この辺はOSがどうのと言うよりもカードリーダー側の仕組みなのではないかなと思うので

    カードリーダー側に対応する機能がなければ、多分無理なのではないでしょうか?

    実際の話、私が使っているものは専用のソフトで実現していますし。

     

    2007年12月14日 1:41
  • PATIO 様、迅速なレスありがとうございます。

    確かに、質問の内容が分かりにくいですね。ごめんなさい。

    質問の内容は、
    マルチカードリーダーに挿入した、メモリーカードだけを取り外すプログラムを作りたい
    のですが、どのようにしたらいいのでしょうか?
    (メモリーカードを取り外し可能かどうかのチェックも必要)

    添付ソフトの付いてるマルチカードリーダがあるという情報ありがとうございます。
    最悪、その方向で検討したいと思います。
    私の購入した、マルチカードリーダーには、添付ソフトは付属していなかったのですが、
    エクスプローラで、取り外しの処理ができるんです。
    ですから、Windowsにその機能があるのではないかと思っています。

    2007年12月14日 2:25
  • >エクスプローラで、取り外しの処理ができるんです。
    >ですから、Windowsにその機能があるのではないかと思っています。

     

    他にも方法があるとは思いますが、Win32APIのDeviceIOControlを使うのが普通です。

    コントロールコードにIOCTL_STORAGE_EJECT_MEDIAを使ってください。

     

    下記、参考にどうぞ。

    http://support.microsoft.com/kb/165721/en-us

    2007年12月14日 4:45
  • たしかに「ハードウェアの安全な取り外し」してしまうとUSB挿しなおしになりますが、

    エクスプローラからドライブを右クリックして「取り出し」だと、メディアの挿しなおしで認識しませんか?

    ※うちのではそうなります。

     

    で、調べてみると IOCTL_STORAGE_EJECT_MEDIA というのがありますね。

    http://support.microsoft.com/kb/165721/ja

     

    こんな回答で合ってますか?

     

     

    2007年12月14日 4:49
  • konuma様、ten10様。ありがとうございます。Win32APIのDeviceIOControlを使用して試してみます。

    ten10様
    >エクスプローラからドライブを右クリックして「取り出し」だと、メディアの挿しなおしで認識しませんか?
    はい、できます。上記「エクスプローラで、取り外しの処理ができるんです。」は、この事を言っています。

    2007年12月14日 5:12
  • 紹介して頂いたサンプルコードのみで、私の期待する「メモリーカードの安全な取り外し」が出来ました!!\(^o^)/
    因みに、CDドライブを指定すると、CDトレイがオープンするんですね。

    PATIO様、konuma 様、ten10様、その他私のスレを見てくださった皆様、ありがとうございました。

    2007年12月14日 6:47
  • おおっ、確かにエクスプローラーに有りましたね。

    そっちの事をすっかり忘れてました。

     

    あとは、取り外ししても安全かを確認する手段ですね。

    こっちもIOCTRL系で何とかなるのかな。

     

     

    2007年12月14日 6:49