Partilhar via


Ocultar dispositivos do Gestor de Dispositivos

Por predefinição, o Gestor de Dispositivos mostra o estado de cada dispositivo num computador. Em algumas situações, talvez você queira impedir que determinados dispositivos apareçam no Gerenciador de dispositivos. Por exemplo, uma placa-mãe pode ter um controlador CardBus com um slot que não é acessível ao usuário. Como o usuário não pode usar o slot, você não deseja que o Gerenciador de dispositivos exiba nenhuma informação sobre o dispositivo.

Para ocultar um dispositivo no Gestor de dispositivos, pode marcá-lo como um dispositivo oculto. Normalmente, o Gerenciador de dispositivos não exibe dispositivos ocultos. (Observe, no entanto, que os usuários podem substituir essa configuração e exibir todos os dispositivos no Gerenciador de dispositivos, mesmo os ocultos. Para obter mais informações sobre como substituir essa configuração, consulte Exibindo dispositivos ocultos.)

Há duas maneiras de marcar seu dispositivo como oculto: dentro do driver do dispositivo ou usando o BIOS ACPI.

Escondendo dispositivos internamente em um driver

Os controladores têm duas maneiras de marcar um controlador como oculto:

  • Um driver de função ou driver de filtro de função pode pedir ao sistema operativo para ocultar um dispositivo iniciado com êxito, respondendo ao IRP IRP_MN_QUERY_PNP_DEVICE_STATE. Quando o IRP chega, o controlador deve definir o bit de PNP_DEVICE_DONT_DISPLAY_UI em IoStatus.Information para TRUE na rotina de despacho do controlador.

  • No Windows XP e versões posteriores dos sistemas operativos Windows, um driver de barramento ou driver de filtro de barramento pode esconder qualquer dispositivo, quer esteja iniciado ou não, respondendo ao IRP_MN_QUERY_CAPABILITIES. Quando o IRP chega, o driver deve definir o membro Parameters.DeviceCapabilities.NoDisplayInUI como TRUE na rotina de despacho do driver. Em alguns casos, um driver de filtro de barramento pode ter que definir esse bit em uma rotina de conclusão. Esta etapa extra é necessária quando a rotina de despacho do motorista do barramento subjacente limpa incorretamente todos os campos de capacidade definidos por outros controladores.

Ocultando dispositivos usando o BIOS ACPI

Você pode marcar um dispositivo como oculto no BIOS ACPI. O BIOS pode expor um método _STA para o dispositivo. O método _STA retorna uma máscara de bits. O Bit 2 (máscara 0x4) especifica se o Gestor de Dispositivos deve tornar o dispositivo visível por predefinição. Este bit deve ser 1 se o dispositivo deve ser tornado visível e 0 caso contrário.

Por exemplo, o exemplo de código a seguir mostra como um controlador USB no barramento raiz ficaria oculto.

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

No Microsoft Windows 2000, você pode ocultar apenas dispositivos iniciados, trabalhando. No Windows XP e versões posteriores do Windows, você também pode ocultar dispositivos quebrados. O bit 3 (máscara 0x8) retornado pelo método _STA indica se um dispositivo está funcionando corretamente. Este bit é 1 se o dispositivo estiver a funcionar corretamente ou for 0 caso contrário. Por exemplo, o exemplo de código a seguir mostra como um BIOS indicaria que um controlador USB está quebrado e deve ser oculto:

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 

Observação O bit de "decodificação" (0x2) não tem qualquer relevância para dispositivos que são descritos através de métodos _ADR. Os exemplos de código anteriores também funcionam sem o conjunto de bits de decodificação. Os gravadores do BIOS devem rastrear o estado de decodificação somente para dispositivos descritos por meio de métodos _HID.