共用方式為


隱藏裝置裝置管理員

根據預設,裝置管理員會顯示電腦上每個裝置的狀態。 在某些情況下,您可能會想要防止某些裝置出現在裝置管理員中。 例如,主機板可能有一個 CardBus 控制器,其位置無法供使用者存取。 因為使用者無法使用位置,所以您不想裝置管理員顯示裝置的任何資訊。

若要隱藏裝置管理員中的裝置,您可以將裝置標示為隱藏的裝置。 一般而言,裝置管理員不會顯示隱藏的裝置。 不過, (請注意,使用者可以覆寫此設定,並在裝置管理員內顯示所有裝置,甚至是隱藏的裝置。如需如何覆寫此設定的詳細資訊,請參閱檢視隱藏的 Devices.)

有兩種方式可將裝置標示為隱藏:在裝置的驅動程式內或使用 ACPI BIOS。

隱藏驅動程式內的裝置

驅動程式有兩種方式可將驅動程式標示為隱藏:

  • 函式驅動程式或函式篩選驅動程式可以透過回應 IRP_MN_QUERY_PNP_DEVICE_STATE IRP 來要求作業系統隱藏已成功啟動 裝置。 當 IRP 送達時,驅動程式必須在驅動程式的分派常式中,將 IoStatus.Information 中的 PNP_DEVICE_DONT_DISPLAY_UI 位設定為 TRUE

  • 在 Windows XP 和更新版本的 Windows 作業系統上,匯流排驅動程式或匯流排篩選驅動程式可以藉由回應 IRP_MN_QUERY_CAPABILITIES IRP 來隱藏任何裝置、啟動或其他裝置。 當 IRP 送達時,驅動程式必須在驅動程式的分派常式中,將 Parameters.DeviceCapabilities.NoDisplayInUI 成員設定為 TRUE 。 在某些情況下,匯流排篩選驅動程式可能需要在完成常式中設定此位。 當基礎匯流排驅動程式的分派常式不正確地清除其他驅動程式設定的所有功能欄位時,需要這個額外的步驟。

使用 ACPI BIOS 隱藏裝置

您可以將裝置標示為在 ACPI BIOS 中隱藏。 BIOS 可以公開裝置的_STA方法。 _STA方法會傳回位元遮罩。 位 2 (遮罩0x4) 指定裝置管理員是否應該讓裝置預設為可見。 如果應該顯示裝置,則此位應該是 1,否則為 0。

例如,下列程式碼範例示範根匯流排上的 USB 控制器如何隱藏。

Device(PCI0) // Root PCI bus
_HID *PNP0A03 
...
    Device(UCTL)  // USB controller
    _ADR 0xddddffff // dddd = device, ffff = function
    _STA 0xB // Device present, but not shown

在 Microsoft Windows 2000 中,您只能隱藏已啟動、運作中的裝置。 在 Windows XP 和更新版本的 Windows 中,您也可以隱藏損毀的裝置。 _STA 方法所傳回的位 3 (遮罩0x8) 會指出裝置是否正常運作。 如果裝置正常運作,則此位為 1,否則為 0。 例如,下列程式碼範例示範 BIOS 如何指出 USB 控制器已中斷,且應該隱藏:

Device(PCI0) // Root PCI bus 
_HID *PNP0A03 
...
    Device(UCTL) // USB controller
    _ADR 0xddddffff //  dddd = device, ffff = function
    _STA 0x3 // Present, but broken and not shown 

注意 「解碼」位 (0x2) 對於透過 _ADR 方法描述的裝置沒有任何相關性。 先前的程式碼範例也可在沒有解碼位集的情況下運作。 BIOS 寫入器只能針對透過 _HID 方法描述的裝置追蹤解碼狀態。