Ocultar dispositivos de Administrador de dispositivos
De forma predeterminada, Administrador de dispositivos muestra el estado de cada dispositivo de un equipo. En algunas situaciones, es posible que quiera evitar que determinados dispositivos aparezcan en Administrador de dispositivos. Por ejemplo, una placa base podría tener un controlador CardBus con una ranura que no sea accesible por el usuario. Dado que el usuario no puede usar la ranura, no desea que Administrador de dispositivos muestre información sobre el dispositivo.
Para ocultar un dispositivo en Administrador de dispositivos, puede marcarlo como un dispositivo oculto. Normalmente, Administrador de dispositivos no muestra dispositivos ocultos. (Sin embargo, tenga en cuenta que los usuarios pueden invalidar esta configuración y mostrar todos los dispositivos dentro de Administrador de dispositivos, incluso los ocultos. Para obtener más información sobre cómo invalidar esta configuración, consulte Visualización de dispositivos ocultos).
Hay dos maneras de marcar el dispositivo como oculto: dentro del controlador del dispositivo o mediante el BIOS ACPI.
Ocultar dispositivos dentro de un controlador
Los controladores tienen dos maneras de marcar un controlador como oculto:
Un controlador de función o un controlador de filtro de función pueden pedir al sistema operativo que oculte un dispositivo iniciado correctamente respondiendo al irP de IRP_MN_QUERY_PNP_DEVICE_STATE . Cuando llegue el IRP, el controlador debe establecer el bit de PNP_DEVICE_DONT_DISPLAY_UI en IoStatus.Information en TRUE en la rutina de distribución del controlador.
En Windows XP y versiones posteriores de los sistemas operativos Windows, un controlador de bus o controlador de filtro de bus puede ocultar cualquier dispositivo, iniciado o de otro modo, respondiendo a la IRP_MN_QUERY_CAPABILITIES IRP. Cuando llega el IRP, el controlador debe establecer el miembro Parameters.DeviceCapabilities.NoDisplayInUI en TRUE en la rutina de distribución del controlador. En algunos casos, es posible que un controlador de filtro de autobús tenga que establecer este bit en una rutina de finalización. Este paso adicional es necesario cuando la rutina de envío del controlador del bus subyacente borra incorrectamente todos los campos de funcionalidad que otros controladores establecen.
Ocultar dispositivos mediante el BIOS ACPI
Puede marcar un dispositivo como oculto en el BIOS ACPI. El BIOS puede exponer un método _STA para el dispositivo. El método _STA devuelve una máscara de bits. Bit 2 (máscara 0x4) especifica si Administrador de dispositivos debe hacer que el dispositivo sea visible de forma predeterminada. Este bit debe ser 1 si el dispositivo se debe hacer visible y 0 de lo contrario.
Por ejemplo, en el ejemplo de código siguiente se muestra cómo se ocultaría un controlador USB en el bus raíz.
Device(PCI0) // Root PCI bus
_HID *PNP0A03
...
Device(UCTL) // USB controller
_ADR 0xddddffff // dddd = device, ffff = function
_STA 0xB // Device present, but not shown
En Microsoft Windows 2000, solo puede ocultar dispositivos de trabajo iniciados. En Windows XP y versiones posteriores de Windows, también puedes ocultar dispositivos rotos. Bit 3 (máscara 0x8) devuelto por el método _STA indica si un dispositivo funciona correctamente. Este bit es 1 si el dispositivo funciona correctamente y es 0 de lo contrario. Por ejemplo, en el ejemplo de código siguiente se muestra cómo un BIOS indicaría que un controlador USB está roto y debe 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 El bit "descodificación" (0x2) no tiene ninguna relevancia para los dispositivos que se describen a través de métodos de _ADR. Los ejemplos de código anteriores también funcionan sin el conjunto de bits de descodificación. Los escritores de BIOS deben realizar un seguimiento del estado de descodificación solo para los dispositivos que se describen a través de métodos de _HID.