推定無題

日々調べたこととか

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 で確認できる

XPe: Stop 0x0000007B Error

環境

Windows Embedded Standard 2009
ATOM N270 + Mobile Intel® 945GSE Express Chipset

現象

CFからFBAさせようとすると、FBA起動前(Windowsフラッグ表示中に)再起動を繰り返す。またFBA済みのイメージをCFへ移して起動させようとしても同じ現象が起きる。

※ACPI構成をStandard PCにした場合は、この現象が起きない。
(ただし電源断が「電源を切る準備が出来ました」になる)

原因

まず再起動する理由

[User Interface Core]
Automatically restart when the system fails > Automatically restart: が有効になっている為。

このチェックを外すとBlueScreenOfDeath(エラー表示の青画面)を確認できる。

BSODのエラー

Stop 0x0000007B Error

BSODでエラーを確認すると、Stop 7B Errorなのが確認できた。
これを詳しく調べると、どうやらTAPによる構成調査で、見つけられなかったコンポーネントが原因で起こることが多い模様。
大体が、以下の様なコンポーネント。

  • PCI standard host CPU bridge
  • PCI standard ISA bridge
  • Plug and Play Software Device Enumerator
  • Primary IDE Channel
  • Secondary IDE Channel
  • Disk Drive
  • Standard Dual Channel PCI IDE Controller
  • Standard IDE/ESDI Hard Disk Controller
  • Microsoft ACPI-Compliant System (if the system is an ACPI compliant system, i.e. contains the ACPI Multiprocessor PC, ACPI Uniprocessor PC, or Advanced Configuration and Power Interface (ACPI) PC components)

で資料(後述)を漁っててふと思いついたのが、
良く考えると、TAPはSATA接続したHDDのOS上で行ってた。CFはIDE接続なのに。
これが原因だった。


とりあえず、IDE接続のHDDを用意して、TAPした構成を元にイメージを組み直したら、現象が起きず、CF起動する事ができるようになった。


どうやらATOM(に付随するチップセット)で頻発しているっぽく、恐らくは同様なミスが原因なのかも。

BIOSではIDE互換、RAID、AHCIかを選択できる様になってて、設定値はDisable、Auto、Combined、Enhanced、SATA Onlyの何れかで、デフォルトでAuto。

この状態だとSATAかIDEか、どちらか使われている方をPrimaryとして認識するっぽい。

この自動認識が曲者なのだと思われる。

資料

msdn::fourms pre-FBA Blue Screen
http://social.msdn.microsoft.com/Forums/en-US/embeddedwindowscomponents/thread/48eb20b4-adaa-45d9-beab-a3184a86500f

で、ここで解決策としてPDFがリンクされているがリンク切れ。
リンクのサイト元をたっどたら、そちらもリンクミスしていて、肝心なPDFが拾えない。
色々探したら、別のサイトで見つかった。

XPE Stop 0x0000007B Error_FINAL_v2.pdf
http://www.annabooks.com/Articles/Articles_XPE/XPE%20Stop%200x0000007B%20Error_FINAL_v2.pdf

要約するとTAPで間違ってPCIバスかIDEバスかAHCIが間違ってしまっているのが原因らしい。

上記のリンクで切れてたサイト元には、素晴らしい資料が溢れてます。

WES2009 XP Embedded
http://www.seanliming.com/WES2009_XPe.html

追記

逆に、IDEで起動させたXPでTAP、SATAでXPeをブートすると同じ現象で止まる。
このIDEでのTAP、SATAでのTAP、それぞれの構成から追加されるコンポーネントの差を見てみると

SATAのみで追加される

  • Intel(R) 82801GBM/GHM (ICH7-M Family) Serial ATA Storage Controller - 27C4

IDEのみで追加される

  • Intel(R) 82801G (ICH7 Family) Ultra ATA Storage Controllers - 27DF
  • Logical Disk Manager
  • Terminal Server Device Redirector

詳細は良く解りませんが、上記のコンポーネントを共存させればSATA/IDEどちらでも起動可能なイメージが作成できました。

0x80070052

USB接続のHDDで、ファイルを削除しようとしたら件の「0x80070052」エラーが出て削除できず。HDDはFAT32、OSはWindows7

原因は、FAT32によるファイル数の制限に引っかかっている為らしい。

  • ルートディレクトリのファイル数 65,536
  • フォルダ傘下のファイル数 21,844(8.3形式なら65,534)

回避方法として、一旦ファイルをルートか、別のディスクへ移動(はできるので)してからなら削除可(ルートの制限に引っかからなければ)。

または諦めてNTFSでフォーマットし直す。NTFSは制限なし。


以下参照

VS2008でHTML5を編集する

Vistual Studio 2008でもHTML5を補完されながら書けたらいいな、と思って調べたら出来た。

THE TRUTH IS OUT THERE::Visual Studio 2008 で HTML5 インテリセンスと検証機能を有効にする


記事中のHTML5.zipダウンロードリンクが切れている。更新された場所は下記。

http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-09-92-49-22/html5.zip

解凍してhtml_5.xsdを(環境に合わせて)所定の場所へコピー、あとはregファイルを実行してレジストリにエントリを追加、VS2008を再起動させればOK。


環境による所定の場所、及びレジストリ実行の引用

html_5.xsd ファイルを以下のフォルダにコピーします。

【32bit 環境】
C:\Program Files\Microsoft Visual Studio 9.0\Common7\Packages\schemas\html

【64bit 環境】
C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\Packages\schemas\html

次のいずれかの .reg ファイルをダブルクリックして、レジストリにエントリを追加します。

【32bit 環境】
HTML-5-Schema-Reg-x86.reg ---- Visual Studio 2008 の場合
HTML-5-Schema-Reg-x86-VWD.reg ---- Visual Web Developer Express 2008 の場合

【64bit 環境】
HTML-5-Schema-Reg-x64.reg ---- Visual Studio 2008 の場合
HTML-5-Schema-Reg-x64-VWD.reg ---- Visual Web Developer Express 2008 の場合

Visual Studio (または Visual Web Developer Express 2008) を再起動します。すると、HTML ターゲットスキーマに HTML 5 が追加されます。

_CRT_SECURE_NO_WARNINGS

VS2008でコンパイルすると_CRT_SECURE_NO_WARNINGSが出ることがある。
要はセキュリティが弱い古い関数に対する警告

警告文をカットする場合は以下の文を挿入する。

#pragma warning(disable:4996)