推定無題

日々調べたこととか

XPe: USBストレージの安全な取り外し

作成したXPeイメージで「USBストレージの安全な取り外し」が出来ない。

現象

  • USBストレージを挿しても、リムーバブルではなく固定ディスクとして認識される。その為、自動再生も行われないし、取り外しアイコンも表示されない。
  • 2つめのUSBストレージを挿すと、リムーバブル認識し、取り外しアイコンも表示される。自動再生も行われ、安全な取り外しも出来る。

必ず先にさしたUSBストレージが固定ディスクとして認識されてしまう。


色々調べたら原因が分かったのでメモ。

原因

%WINDIR%\System32\Dirvers\usbstor.sys

バグと言ってしまうと弊害があるようですが、このファイルを古い版に置き換えると直る。

  • msdn::forums Safely Remove Hardware Icon?

http://social.msdn.microsoft.com/Forums/en-US/embeddedwindowscomponents/thread/cfffc7b6-5679-46fc-a1c9-4c08228b7b47/

現象がおきるバージョン

usbstor.sys

  • 5.3.1201.0
  • 2008/07/14 12:29
  • 36.0 KB (36,864 バイト)

大丈夫なバージョン

幾つもバージョンがあるようだけど、通常XPProJPNでは下記。
これを既存イメージに上書きすると、現象が解消し、リムーバブル認識し、安全な取り外しが出来る様になった。

usbstor.sys

  • 5.1.2600.5512
  • 28.0 KB (28,672 バイト)
  • 2008/04/14 0:15

上記以外にもWES2009リポジトリ内には「5.1.2600.1106」「5.1.2600.2180」もある。

なんで、そうなるのか

調べたら、固定ディスクにしてしまうusbstor.sysが含まれるコンポーネントは下記でした。

USB Boot Mass Storage Device

名前から推察するに、USBブート可能にする為、ワザと固定ディスク認識する仕様になっているのではなかろうか?

usbstor.sysは下記のコンポーネントにも含まれてますが、こちらはファイルサイズから推察*1するに「5.1.2600.2180」か「5.1.2600.5512」

USB Mass Storage Device

イメージビルドすると、最終的に最も新しいファイルが生き残るのだと思う。
なので両方のコンポーネントが入っていても、[USB Boot Mass Storage Device]の方が生き残るようです。

解決方法

  1. 手動で古いusbstor.sysをコピーする
  2. [USB Boot Mass Storage Device] Files で、コピーされるファイルをDisableする

のどちらかかな。
既存イメージなら前者、今から作るなら後者([USB Boot Mass Storage Device]だけを省くのは依存関係で難易度が高かったりするので)

その他のコンポーネント

「ハードウェアの安全な取り外し」を可能にするコンポーネントに他に下記が必要(たぶん)

  • Removable Storage Service
  • Safely Remove Hardware Program
  • Tray Icon Add/Remove Support
  • User Interface Core
    Settings : Show Notifications on Task bar: Check
  • USB Mass Storage Device

*1:ファイルのプロパティ > Advanced > SrcFileSize で確認できる