64 ビット システムのための INF ファイルの要件最終更新日: 2007年 7月 31日 ![]() Windows Server 2003 SP1 以降のバージョンの Windows では、x64 ベース システムには、Un-Decorated INF セクションがあるドライバ パッケージはインストールされません。Intel Itanium システムでは、互換性を維持するため、Windows Server 2003 SP1 は、Un-Decorated INF セクションしかないドライバ パッケージをインストールします。ただし、INF デコレーションがハードウェアの Windows ロゴ プログラムの要件となっているため、Un-Decorated INF セクションしかないドライバ パッケージはロゴの資格認定を得ることができません。 このペーパーは、非 x86 ベースの 64 ビット システム (Intel Itanium および AMD64) へのデバイスのインストールに影響を与える INF の仕様変更を説明します。このペーパーでは、x64 とは、AMD64 と Intel Extended Memory 64 Technology システムで使われている 64 ビット アーキテクチャを指します。 目次
はじめにWindows XP において、INF ファイルの [Models] セクション名に TargetOsVersion デコレーションを指定する機能を導入しました。しかし、そのデコレーションは必須とはされていませんでした。これは、32 ビットと 64 ビットの両方のシステムへのデバイス ドライバのインストールをサポートするための機能で、Intel Itanium プラットフォームを対象としていました。 Windows Server 2003 以前のバージョンの Windows では、INF の構文規則上、Un-decorated のセクションをすべてのプラットフォームにインストールすることが認められていましたので、ユーザーが Itanium ベースのシステムに Un-Decorated INF ファイルを持つドライバ パッケージをインストールしようとしても、プラグ アンド プレイはその操作を認めてきました。そこで、サービス バイナリにプラットフォームの不一致が検出されると、インストールは不可解なエラーを起こしていました。そのため、ユーザーには、なぜ失敗したのかがわかりにくくなっていました ユーザーは、必ずしも 32 ビット Windows と 64 ビット Windows の違いや、x64 ベース、Itanium ベース、x86 ベース アーキテクチャの間の違いを理解しているとは限りません。 誤ったシステム プラットフォームに INF ベース デバイス ドライバ パッケージをインストールしようとするユーザーを保護し、これに関連するメーカーのサポート コストを削減するために、Windows Server 2003 SP1 では、INF の構文規則を次のように変更しました。
重要: x64 バージョンの Windows Server 2003 SP1 Release Candidate 1 以降では、この変更がオペレーティング システムによって強制されます。メーカー各社は、このペーパーに従って、すべての 64 ビット プラットフォーム (x64 および Intel Itanium) 用の Un-Decorated INF ファイルを更新するようにしてください。 INF のデコレーションがドライバ パッケージのインストールに与える影響INF ファイルのセクションは、特定のプラットフォームないしオペレーティング システムを識別する TargetOSVersion サフィックスが名前に含まれていれば、デコレーション付きとみなされます。デコレーション付きセクションには、TargetOSVersion によって指定されたプラットフォームとオペレーティング システムのみに関係のあるインストール情報が格納されます。 Windows Server 2003 までのインストールの動作このセクションでは、Microsoft Windows Server 2003 のオリジナル リリース、およびそれ以前の Windows において、オペレーティング システムが限定付きと無限定の INF をどのように扱っていたかを説明します。デバイス ドライバ パッケージの INF ファイルに含まれている無限定の [Manufacturer] セクションおよび [Models] セクション名は、一般的に次のような形になっています。 この例は、TargetOsVersion デコレーションを使っていません。Windows Server 2003 以前の Windows のデバイス照合構文規則では、すべてのプラットフォームへのインストールという意味でこのような構文が認められていました。パッケージに正しいバイナリ ファイルが含まれていることが確実でない限り、このデバイス パッケージはインストールされないようにすべきところですが、この INF ファイルでは、誤ったインストールを避けられません。 次の例は、x64 システムを指定する TargetOSVersion デコレーションが付けられた同じ [Manufacturer] セクションおよび [Models] セクション名を示したものです。ここで、"x64" とは、AMD64 および Intel Extended Memory 64 Technology で使われている 64 ビット アーキテクチャのことです。INF ファイル内の .ntamd64 デコレーションは、すべての x64 システムを指します。 このドライバ パッケージをインストールしようとすると、INF パーサは、デコレーションを含むセクション名を組み立て、セクション名とターゲット プラットフォームが一致するかどうかをチェックします。一致するなら、INF パーサは INF ファイル内のセクション名を探し、あればそのセクションを使います。 Windows Server 2003 以前の Windows では、INF パーサは、デコレーション付きのセクションがなければ、Un-Decorated のセクションを探していました。これらのデコレーションは広く使われてはいませんので、プラグ アンド プレイは、Un-Decorated のデバイスを見つけると、誤ったプラットフォームにドライバをインストールしようとしていました。 Windows Server 2003 SP1 以降の非 x86 の 64 ビット プラットフォームでのインストールの動作Windows XP および Windows Server 2003 の元のリリースでは、INF パーサーは、デコレーション付きのセクションの名前が指定されている場合、デコレーション付きのセクションを使用します。そうでない場合、Un-Decorated のセクションを使用します。ただし、Windows Server 2003 SP1 およびそれ以降のバージョンでは、INF パーサーは、x64 ベースのプラットフォームで、Un-Decorated のセクション名を検索しません。 Windows Server 2003 SP1 以降の非 x86 ベース プラットフォームでは、[Models] セクション名に TargetOsVersion デコレーションを付ける必要があります。たとえば、ユーザーが x64 システムで Un-Decorated のドライバ パッケージをインストールしようとしても、PnP はデコレーション付きの [Models] セクション名が見つからないため、デバイス ID の照合をしません。 注: Un-Decorated INF を使用するストレージ ドライバは、最初に F6 を使用して読み込まれますが、GUI Mode セットアップ後にシステムが最後に再起動するときにバグ チェック 7B を生成します。これは、F6 機構がストレージ ドライバの読み込みに SetupAPI ロジックを使用しないためです。このドライバをインストールするには、64 ビット INF デコレーションを使用する新しいバージョンのドライバを入手するか、この記事の後の「x64 ベース システムで Un-Decorated INF をインストールする」の説明に従って手動で INF にデコレーションを付けます。バグチェック 7B から回復することはできません。代わりに、説明に従ってストレージ ドライバを更新し、F6 を使用してセットアップ プロセスを再開する必要があります。 Windows プラットフォームごとのインストール動作のまとめ次の表は、さまざまなプラットフォームおよび Windows バージョンでデコレーション付き、Un-Decorated の INF ファイルがどのように動作するかをまとめたものです。 表 1. プラットフォームとオペレーティング システムのバージョンごとのデコレーションとインストールの動作
• 対応する INF セクション内のデバイス モデルが、検出されてインストールされます。 X 対応する INF ファイル内のデバイス モデルは検出されず、インストールは行われません。 * リリースされているドライバ パッケージが使えなくなるのを避けるために、Intanium プラットフォームで Un-Decorated の INF ファイルを使うことができます。Itanium ベース プラットフォーム用の新しいドライバ パッケージでは、デコレーション付きのセクションを使用して "Designed for Windows" ロゴの資格認定を得る必要があります。 複数のプラットフォームを対象とする INF ファイルx64、Itanium ベース システムのためのデコレーション付きセクションと、x86 ベース システムのための Un-Decorated または ntx86 デコレーション付きセクションを用意すれば、マルチプラットフォーム INF を作ることができます。 注: デコレーション付き INF ファイルを持つドライバ パッケージは、Windows 2000 にはインストールできません。デコレーション機能が初めて実装されたのは、Windows XP です。 複数のプラットフォームを対象とするドライバ パッケージをサポートするための方法としては、次の 2 種類が考えられます。
最小要件では、[Models] セクション名に対する単一のデコレーションのみが必要なので、方法 1 が優先されます。方法 2 で、INF パーサーは、さまざまなセクションをデコレーションして単一の INF を作成するため、利用可能な構文を提供します。もっとも、このようにして作った INF ファイルは複雑になり、保守しにくくなります。 次の例は、マルチプラットフォーム INF を示したものです。 INF にはまた、[Version] セクションにデコレートされた CatalogFile エントリを含めることができます。詳細については、Windows Driver Kit (WDK) ドキュメントで「Creating INF Files for Multiple Platforms and Operating Systems」を参照してください。 x64 ベース システムで Un-Decorated INF をインストールする次の方法により、x64 ベース システムで Un-Decorated INF をインストールできます。これらの対処方法は、テスト システムでの使用のみを目的とし、製品ドライバ向けではありません。 方法 1: AMD 64 で Un-Decorated のモデルのチェックを無効にする。AMD64 ベース システムのみに対して Un-Decorated のモデルのチェックを無効にするには、次のようにゼロ以外の数値のレジストリ値を作成します。 このキーに 1 などのゼロ以外の値を設定してシステムを再起動し、ドライバをインストールします。 方法 2: INF を編集してデコレーションを追加する この記事の説明に従って、またはその他の 64 ビット ドライバ パッケージ用のデコレーション付き INF を参照して、手動でデコレーションを追加できます。これにより、署名済みドライバの署名が使えなくなりますが、ローカル コンピュータで署名済みドライバのポリシーが有効であることを条件として、ドライバをインストールできます。 チェックリスト: ドライバ開発者のための行動指針x64 ベースのシステムにドライバ パッケージをインストールするには、INF の [Manufacturer] セクションのエントリと [Models] セクション名をデコレートする必要があります。また、Intel Itanium ベースのシステムでも、それらをデコレートする必要があります。これらのデコレーションは、Windows XP オリジナル リリース以降のすべての Windows でサポートされていますので、非 x86 プラットフォーム用のすべてのリリース済み NT ベース Windows で、この種のデコレーション付き INF ファイルは動作します。 Windows 2000 に対する互換性が必要であれば、INF セクションは Un-Decorated のままにしておかなければなりませんが、ドライバ インストール パッケージのターゲットが Windows XP 以降のシステムの場合は、デコレーションを付けることができます。 64 ビット Windows の INF ファイルに関するパートナーの皆様へのお願い
|