PCI Express 拡張シャーシを Windows ベースのコンピューターに接続すると、"Code 12" または "Code 31" というエラー メッセージが表示される

この記事では、PCI Express 拡張シャーシをコンピューターに接続するときに発生するエラーの回避策について説明します。

適用対象: Windows 10 - すべてのエディション、Windows Server 2012 R2
元の KB 番号: 942959

重要

この資料には、レジストリの編集方法が記載されています。 レジストリを変更する前に必ずレジストリのバックアップを作成してください。 また、問題が発生した場合に備えて、レジストリの復元方法を理解しておいてください。 レジストリをバックアップ、復元、変更する方法の詳細については、次の記事番号をクリックして、「Microsoft サポート技術情報: Windows でレジストリをバックアップおよび復元する方法 」322756 の記事を参照してください

現象

次のような状況で問題が発生します。

  • PCI Express 拡張シャーシがコンピューターに接続されています。
  • PCI Express 拡張シャーシに接続されているデバイスがあります。

このシナリオでは、デバイスが正しく列挙されていないか、正しく起動しない可能性があります。 さらに、デバイス マネージャーでデバイスのプロパティを表示すると、次のいずれかのエラー メッセージが表示される場合があります。

  • エラー 1:

    このデバイスは、使用できる十分な空きリソースを見つけることができません。 (コード 12)

  • エラー 2:

    Windows ではこのデバイスに必要なドライバーを読み込むことができないため、デバイスが正常に動作していません。 (コード 31)

原因

エラー 1 の原因

この問題は、拡張シャーシ内の PCI Express ブリッジ デバイスの初期状態が原因で発生する可能性があります。 既定では、PCI Express ブリッジ デバイスを起動またはリセットすると、ブリッジ リソース ウィンドウの制限レジスタの初期値は、ブリッジ リソース ウィンドウの基本レジスタの初期値よりも小さくなります。 この動作は、ブリッジ リソース ウィンドウが無効になっていることを示すものとして解釈されます。 さらに、PCI Express ブリッジ デバイスのブリッジ リソース ウィンドウの要件は生成されません。 そのため、ブリッジ リソース ウィンドウからのリソースを必要とする PCI Express ブリッジ デバイスは列挙に失敗します。 この状況では、コード 12 エラーが生成されます。

エラー 2 の原因

この問題は、オペレーティング システムが周辺機器コンポーネント 相互接続 (PCI) バス番号を使い切った場合に発生する可能性があります。 通常、コンピューター BIOS は PCI Express ブリッジ デバイスの限られたバス番号範囲を構成します。 PCI Express 複合スイッチと深いデバイス階層を含む拡張シャーシがコンピューターに追加されると、オペレーティング システムで使用可能なバス番号が不足します。 そのため、システムは拡張シャーシ内のデバイスを起動できません。

回避策

エラー 1 の回避策

警告

レジストリ エディタや他の方法を使用してレジストリを変更する際、適切に変更しないと重大な問題を引き起こす可能性があります。 場合によっては、オペレーティング システムの再インストールが必要になります。 こうした問題の修復について、マイクロソフトはいかなる保証もいたしません。 レジストリの変更はユーザー自身の責任において行ってください。 この問題を回避するには、以下の手順を実行します。

  1. [スタート] をクリックし、[検索の開始] ボックスに「regedit」と入力し、[プログラム] ボックスの一覧で [regedit] をクリックします。

    管理者パスワードの入力または確認を求められたら、パスワードを入力するか、[ 続行] をクリックします。

  2. 次のレジストリ サブキーを見つけてクリックします。
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\PnP\Pci

  3. HackFlags レジストリ エントリが存在しない場合は、次の手順に従います。

    1. [ 編集 ] メニューの [ 新規] をポイントし、[ DWORD (32 ビット) 値] をクリックします。
    2. 「HackFlags」と入力し、Enter キーを押します。
    3. [編集] メニューの [変更] をクリックします。
    4. [値データ] ボックスに「400」と入力し、[基本] 領域の [16 進数] をクリックし、[OK] をクリックします
    5. レジストリ エディターを終了します。
  4. HackFlags レジストリ エントリが存在する場合は、次の手順に従います。

    1. HackFlags を右クリックし、[変更] をクリックします。
    2. [値データ] ボックスに「400」と入力し、[基本] 領域の [16 進数] をクリックし、[OK] をクリックします
    3. レジストリ エディターを終了します。

エラー 2 の回避策

警告

レジストリ エディタや他の方法を使用してレジストリを変更する際、適切に変更しないと重大な問題を引き起こす可能性があります。 場合によっては、オペレーティング システムの再インストールが必要になります。 こうした問題の修復について、マイクロソフトはいかなる保証もいたしません。 レジストリの変更はユーザー自身の責任において行ってください。 この問題を回避するには、以下の手順を実行します。

  1. [スタート] をクリックし、[検索の開始] ボックスに「regedit」と入力し、[プログラム] ボックスの一覧で [regedit] をクリックします。

    管理者パスワードの入力または確認を求められたら、パスワードを入力するか、[ 続行] をクリックします。

  2. 次のレジストリ サブキーを見つけてクリックします。
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\PnP\Pci

  3. HackFlags レジストリ エントリが存在しない場合は、次の手順に従います。

    1. [ 編集 ] メニューの [ 新規] をポイントし、[ DWORD (32 ビット) 値] をクリックします。
    2. 「HackFlags」と入力し、Enter キーを押します。
    3. [編集] メニューの [変更] をクリックします。
    4. [値データ] ボックスに「200」と入力し、[基本] 領域の [16 進数] をクリックし、[OK] をクリックします
    5. レジストリ エディターを終了します。
  4. HackFlags レジストリ エントリが存在する場合は、次の手順に従います。

    1. HackFlags を右クリックし、[変更] をクリックします。
    2. [値データ] ボックスに「200」と入力し、[基本] 領域の [16 進数] をクリックし、[OK] をクリックします
    3. レジストリ エディターを終了します。

エラー 1 とエラー 2 の回避策を同時に有効にする

警告

レジストリ エディタや他の方法を使用してレジストリを変更する際、適切に変更しないと重大な問題を引き起こす可能性があります。 場合によっては、オペレーティング システムの再インストールが必要になります。 こうした問題の修復について、マイクロソフトはいかなる保証もいたしません。 レジストリの変更はユーザー自身の責任において行ってください。

  1. [スタート] をクリックし、[検索の開始] ボックスに「regedit」と入力し、[プログラム] ボックスの一覧で [regedit] をクリックします。

    管理者パスワードの入力または確認を求められたら、パスワードを入力するか、[ 続行] をクリックします。

  2. 次のレジストリ サブキーを見つけてクリックします。
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\PnP\Pci

  3. HackFlags レジストリ エントリが存在しない場合は、次の手順に従います。

    1. [ 編集 ] メニューの [ 新規] をポイントし、[ DWORD (32 ビット) 値] をクリックします。
    2. 「HackFlags」と入力し、Enter キーを押します。
    3. [編集] メニューの [変更] をクリックします。
    4. [値データ] ボックスに「600」と入力し、[基本] 領域の [16 進数] をクリックし、[OK] をクリックします
    5. レジストリ エディターを終了します。
  4. HackFlags レジストリ エントリが存在する場合は、次の手順に従います。

    1. HackFlags を右クリックし、[変更] をクリックします。
    2. [値データ] ボックスに「600」と入力し、[基本] 領域の [16 進数] をクリックし、[OK] をクリックします
    3. レジストリ エディターを終了します。

データ収集

Microsoft サポートの支援が必要な場合は、「展開関連の問題について TSS を使用して情報を収集する」に記載している手順に従って情報を収集することをお勧めします。