Udostępnij przez


Ukrywanie urządzeń przed menedżerem urządzeń

Domyślnie Menedżer urządzeń pokazuje stan każdego urządzenia na komputerze. W niektórych sytuacjach może być konieczne uniemożliwienie wyświetlania niektórych urządzeń w Menedżerze urządzeń. Na przykład płyta główna może mieć kontroler CardBus z gniazdem, które nie jest dostępne dla użytkownika. Ponieważ użytkownik nie może użyć gniazda, nie chcesz, aby Menedżer urządzeń wyświetlał jakiekolwiek informacje o urządzeniu.

Aby ukryć urządzenie w Menedżerze urządzeń, możesz oznaczyć je jako ukryte urządzenie. Zazwyczaj Menedżer urządzeń nie wyświetla ukrytych urządzeń. (Należy jednak pamiętać, że użytkownicy mogą zastąpić to ustawienie i wyświetlić wszystkie urządzenia w Menedżerze urządzeń, nawet ukryte. Aby uzyskać więcej informacji na temat zastępowania tego ustawienia, zobacz Wyświetlanie ukrytych urządzeń).

Istnieją dwa sposoby oznaczania urządzenia jako ukrytego: w sterowniku urządzenia lub przy użyciu systemu BIOS ACPI.

Ukrywanie urządzeń w obrębie sterownika

Kierowcy mają dwa sposoby oznaczenia kierowcy jako ukrytego:

  • Sterownik funkcji lub sterownik filtra funkcji może poprosić system operacyjny o ukrycie pomyślnie uruchomionego urządzenia, odpowiadając na żądanie IRP_MN_QUERY_PNP_DEVICE_STATE IRP. Po nadejściu IRP sterownik musi ustawić bit PNP_DEVICE_DONT_DISPLAY_UI w IoStatus.Information na TRUE w rucie dyspozytorskiej sterownika.

  • W systemie Windows XP i nowszych wersjach systemów operacyjnych Windows, sterownik magistrali lub sterownik filtru magistrali może ukryć dowolne urządzenie, uruchomione lub nie, odpowiadając na IRP_MN_QUERY_CAPABILITIES IRP. Po nadejściu IRP sterownik musi ustawić członka Parameters.DeviceCapabilities.NoDisplayInUI na TRUE w procedurze obsługi sterownika. W niektórych przypadkach sterownik filtru magistrali może być musiał ustawić ten bit w procedurze uzupełniania. Ten dodatkowy krok jest wymagany, gdy podstawowa procedura obsługi kierowcy magistrali niepoprawnie usuwa wszystkie pola funkcji ustawione przez innych kierowców.

Ukrywanie urządzeń przy użyciu systemu BIOS ACPI

Urządzenie można oznaczyć jako ukryte w systemie BIOS ACPI. System BIOS może uwidocznić metodę _STA dla urządzenia. Metoda _STA zwraca bitmaskę. Bit 2 (maska 0x4) określa, czy Menedżer urządzeń powinien domyślnie uwidocznić urządzenie. Ten bit powinien mieć wartość 1, jeśli urządzenie powinno być widoczne i 0 w przeciwnym razie.

Na przykład poniższy przykład kodu pokazuje, jak kontroler USB w magistrali głównej będzie ukryty.

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

W systemie Microsoft Windows 2000 można ukryć tylko uruchomione, działające urządzenia. W systemie Windows XP i nowszych wersjach systemu Windows można również ukryć uszkodzone urządzenia. Bit 3 (maska 0x8), który jest zwracany przez metodę _STA wskazuje, czy urządzenie działa prawidłowo. Ten bit to 1, jeśli urządzenie działa prawidłowo i ma wartość 0 w przeciwnym razie. Na przykład poniższy przykład kodu pokazuje, jak system BIOS wskazuje, że kontroler USB jest uszkodzony i powinien być ukryty:

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 

Uwaga Bit "dekodowania" (0x2) nie ma znaczenia dla urządzeń opisanych za pomocą metody _ADR. Poprzednie przykłady kodu działają również bez zestawu bitów dekodowania. Programiści BIOS muszą śledzić stan dekodowania tylko dla urządzeń opisanych za pomocą _HID.