Partilhar via


Ocultando dispositivos de Gerenciador de Dispositivos

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

Para ocultar um dispositivo em Gerenciador de Dispositivos, você pode marcar o dispositivo como um dispositivo oculto. Normalmente, 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 em Gerenciador de Dispositivos, até 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 do ACPI.

Ocultando dispositivos de dentro de um driver

Os motoristas têm duas maneiras de marcar um driver como oculto:

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

  • No Windows XP e versões posteriores dos sistemas operacionais Windows, um driver de barramento ou driver de filtro de barramento pode ocultar qualquer dispositivo, iniciado ou não, respondendo à IRP_MN_QUERY_CAPABILITIES IRP. Quando o IRP chega, o driver deve definir o membro Parameters.DeviceCapabilities.NoDisplayInUI como TRUE na rotina de expedição do driver. Em alguns casos, um driver de filtro de ônibus pode ter que definir esse bit em uma rotina de conclusão. Essa etapa extra é necessária quando a rotina de expedição do motorista de ônibus subjacente limpa incorretamente todos os campos de funcionalidade definidos por outros drivers.

Ocultando dispositivos usando o BIOS do ACPI

Você pode marcar um dispositivo como oculto no BIOS do 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 Gerenciador de Dispositivos deve tornar o dispositivo visível por padrão. Esse bit deve ser 1 se o dispositivo deve ficar visível e 0 caso contrário.

Por exemplo, o exemplo de código a seguir mostra como um controlador USB no barramento raiz seria 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ê só pode ocultar dispositivos iniciados e funcionando. 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. Esse bit será 1 se o dispositivo estiver funcionando corretamente e 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 estar 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 

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