文章編號: 942959 - 上次校閱: 2008年4月15日 - 版次: 2.2

當您將 PCI Express 擴充底座附加至執行 Windows Vista 或 Windows Server 2008 的電腦時,出現錯誤訊息:「代碼 12」或「代碼 31」

系統提示本文適用於您使用的作業系統之外的作業系統。與您不相關的文章內容已停用。
重要 本文包含如何修改登錄的相關資訊。修改登錄之前,請務必將它備份起來,並了解在發生問題時如何還原登錄。如需有關如何備份、還原和修改登錄的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
322756? (http://support.microsoft.com/kb/322756/ ) 如何備份和還原 Windows 的登錄

在此頁中

全部展開 | 全部摺疊

徵狀

請試想下列案例:
  • PCI Express 擴充底座已連接至執行 Windows Vista Service Pack 1 (SP1) 或 Windows Server 2008 的電腦。
  • 還有其他裝置連接至 PCI Express 擴充底座。
在這種情況下,可能無法正確地列舉裝置,或者裝置可能無法正常啟動。此外,當您在「裝置管理員」中檢視裝置內容時,可能會收到下列其中一個錯誤訊息:
  • 錯誤 1
    這個裝置找不到足夠可使用的資源。(代碼 12)
  • 錯誤 2
    這個裝置並未正確執行,因為 Windows 無法載入這個裝置必需的驅動程式。(代碼 31)

發生的原因

錯誤 1 的原因

之所以發生這個問題,是因為擴充底座中 PCI Express 橋接器裝置的初始狀態所造成。根據預設,當您啟動或重設 PCI Express 橋接器裝置時,橋接器資源視窗的限制登錄的初始值,小於橋接器資源視窗的底數登錄的初始值。Windows Vista 和 Windows Server 2008 將這個行為解譯為橋接器資源視窗已停用的指標。此外,Windows Vista 和 Windows Server 2008 不會產生任何 PCI Express 橋接器裝置的橋接器資源視窗需求。因此,任何需要來自橋接器資源視窗的資源的 PCI Express 橋接器裝置,將無法列舉。在這種情況下,會產生「代碼 12」錯誤。

錯誤 2 的原因

如果作業系統的「周邊元件連接」(Peripheral Component Interconnect,PCI) 匯流排數目不足,可能就會發生這個問題。一般而言,電腦 BIOS 會設定有限的匯流排數目範圍,以用於 PCI Express 橋接器裝置。當包含 PCI Express 複雜參數的擴充底座與多層裝置階層一起新增至電腦時,作業系統的可用匯流排數目就會不足。因此,系統無法啟動擴充底座中的裝置。

其他可行方案

錯誤 1 的解決方法

警告 如果您使用「登錄編輯程式」或其他方法不當地修改登錄,可能會發生嚴重問題。您可能需要重新安裝作業系統,才能解決這些問題。Microsoft 不保證可以解決這些問題。請自行承擔修改登錄的一切風險。 如果要解決這個問題,請依照下列步驟執行:
  1. 按一下 [開始]
    摺疊此圖像展開此圖像
    [開始] 按鈕
    ,在 [開始搜尋] 方塊中輸入 regedit,然後按一下 [程式集] 清單中的 [regedit]

    摺疊此圖像展開此圖像
    使用者存取控制權限
    如果出現要求您輸入系統管理員密碼或確認的提示,請輸入密碼或按一下 [繼續]
  2. 找出並按一下下列登錄子機碼:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\PnP\Pci
  3. 如果 HackFlags 登錄項目不存在,請依照下列步驟執行:
    1. [編輯] 功能表上,指向 [新增],然後按一下 [DWORD (32 位元) 值]
    2. 輸入 HackFlags,然後按下 ENTER。
    3. [編輯] 功能表上,按一下 [修改]
    4. [數值資料] 方塊中,輸入 400,按一下 [底數] 區域中的 [十六進位],然後按一下 [確定]
    5. 結束 [登錄編輯程式]。
  4. 如果 HackFlags 登錄項目存在,請依照下列步驟執行:
    1. 用滑鼠右鍵按一下 [HackFlags],然後按一下 [修改]
    2. [數值資料] 方塊中,輸入 400,按一下 [底數] 區域中的 [十六進位],然後按一下 [確定]
    3. 結束 [登錄編輯程式]。

錯誤 2 的解決方法

警告 如果您使用「登錄編輯程式」或其他方法不當地修改登錄,可能會發生嚴重問題。您可能需要重新安裝作業系統,才能解決這些問題。Microsoft 不保證可以解決這些問題。請自行承擔修改登錄的一切風險。 如果要解決這個問題,請依照下列步驟執行:
  1. 按一下 [開始]
    摺疊此圖像展開此圖像
    [開始] 按鈕
    ,在 [開始搜尋] 方塊中輸入 regedit,然後按一下 [程式集] 清單中的 [regedit]

    摺疊此圖像展開此圖像
    使用者存取控制權限
    如果出現要求您輸入系統管理員密碼或確認的提示,請輸入密碼或按一下 [繼續]
  2. 找出並按一下下列登錄子機碼:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\PnP\Pci
  3. 如果 HackFlags 登錄項目不存在,請依照下列步驟執行:
    1. [編輯] 功能表上,指向 [新增],然後按一下 [DWORD (32 位元) 值]
    2. 輸入 HackFlags,然後按下 ENTER。
    3. [編輯] 功能表上,按一下 [修改]
    4. [數值資料] 方塊中,輸入 200,按一下 [底數] 區域中的 [十六進位],然後按一下 [確定]
    5. 結束 [登錄編輯程式]。
  4. 如果 HackFlags 登錄項目存在,請依照下列步驟執行:
    1. 用滑鼠右鍵按一下 [HackFlags],然後按一下 [修改]
    2. [數值資料] 方塊中,輸入 200,按一下 [底數] 區域中的 [十六進位],然後按一下 [確定]
    3. 結束 [登錄編輯程式]。

同時採用錯誤 1 和錯誤 2 的解決方案

警告 如果您使用「登錄編輯程式」或其他方法不當地修改登錄,可能會發生嚴重問題。您可能需要重新安裝作業系統,才能解決這些問題。Microsoft 不保證可以解決這些問題。請自行承擔修改登錄的一切風險。
  1. 按一下 [開始]
    摺疊此圖像展開此圖像
    [開始] 按鈕
    ,在 [開始搜尋] 方塊中輸入 regedit,然後按一下 [程式集] 清單中的 [regedit]

    摺疊此圖像展開此圖像
    使用者存取控制權限
    如果出現要求您輸入系統管理員密碼或確認的提示,請輸入密碼或按一下 [繼續]
  2. 找出並按一下下列登錄子機碼:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\PnP\Pci
  3. 如果 HackFlags 登錄項目不存在,請依照下列步驟執行:
    1. [編輯] 功能表上,指向 [新增],然後按一下 [DWORD (32 位元) 值]
    2. 輸入 HackFlags,然後按下 ENTER。
    3. [編輯] 功能表上,按一下 [修改]
    4. [數值資料] 方塊中,輸入 600,按一下 [底數] 區域中的 [十六進位],然後按一下 [確定]
    5. 結束 [登錄編輯程式]。
  4. 如果 HackFlags 登錄項目存在,請依照下列步驟執行:
    1. 用滑鼠右鍵按一下 [HackFlags],然後按一下 [修改]
    2. [數值資料] 方塊中,輸入 600,按一下 [底數] 區域中的 [十六進位],然後按一下 [確定]
    3. 結束 [登錄編輯程式]。

這篇文章中的資訊適用於:
  • Windows Vista Service Pack 1?應用於:
    • Windows Vista 旗艦版
    • Windows Vista 商用進階版
    • Windows Vista 商用入門版
    • Windows Vista 家用進階版
    • Windows Vista 家用入門版
    • Windows Vista Starter
  • Windows Server 2008 Datacenter without Hyper-V
  • Windows Server 2008 Enterprise without Hyper-V
  • Windows Server 2008 for Itanium-Based Systems
  • Windows Server 2008 Standard without Hyper-V
  • Windows Server 2008 Datacenter
  • Windows Server 2008 Enterprise
  • Windows Server 2008 Standard
  • Windows Web Server 2008
關鍵字:?
kbexpertiseadvanced kbtshoot KB942959
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。