다음을 통해 공유


장치 관리자 디바이스 숨기기

기본적으로 장치 관리자 컴퓨터의 모든 디바이스 상태를 표시합니다. 경우에 따라 특정 디바이스가 장치 관리자 나타나지 않도록 방지할 수 있습니다. 예를 들어 마더보드에는 사용자가 액세스할 수 없는 슬롯이 있는 CardBus 컨트롤러가 있을 수 있습니다. 사용자가 슬롯을 사용할 수 없으므로 장치 관리자 디바이스에 대한 정보를 표시하지 않도록 합니다.

장치 관리자 디바이스를 숨기려면 디바이스를 숨겨진 디바이스로 표시할 수 있습니다. 일반적으로 장치 관리자 숨겨진 디바이스를 표시하지 않습니다. (그러나 사용자는 이 설정을 재정의하고 숨겨진 디바이스까지도 장치 관리자 내의 모든 디바이스를 표시할 수 있습니다. 이 설정을 재정의하는 방법에 대한 자세한 내용은 숨겨진 디바이스 보기를 참조하세요.)

디바이스의 드라이버 내에서 또는 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)은 디바이스가 제대로 작동하는지 여부를 나타냅니다. 디바이스가 제대로 작동하고 그렇지 않으면 0인 경우 이 비트는 1입니다. 예를 들어 다음 코드 예제에서는 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 방법을 통해 설명되는 디바이스에 대해서만 디코딩 상태를 추적해야 합니다.