Ausblenden von Geräten vor Geräte-Manager

Standardmäßig zeigt Geräte-Manager den Zustand jedes Geräts auf einem Computer an. In einigen Situationen möchten Sie möglicherweise verhindern, dass bestimmte Geräte in Geräte-Manager angezeigt werden. Beispielsweise kann eine Hauptplatine über einen CardBus-Controller mit einem Slot verfügen, auf den benutzerseitig nicht zugegriffen werden kann. Da der Benutzer den Slot nicht verwenden kann, möchten Sie nicht, dass Geräte-Manager Informationen über das Gerät anzeigen.

Um ein Gerät in Geräte-Manager auszublenden, können Sie das Gerät als ausgeblendetes Gerät markieren. In der Regel zeigt Geräte-Manager keine ausgeblendeten Geräte an. (Beachten Sie jedoch, dass Benutzer diese Einstellung überschreiben und alle Geräte innerhalb Geräte-Manager anzeigen können, auch ausgeblendete Geräte. Weitere Informationen zum Überschreiben dieser Einstellung finden Sie unter Anzeigen ausgeblendeter Geräte.)

Es gibt zwei Möglichkeiten, Ihr Gerät als ausgeblendet zu markieren: im Treiber des Geräts oder mithilfe des ACPI-BIOS.

Ausblenden von Geräten in einem Treiber

Treiber haben zwei Möglichkeiten, einen Treiber als ausgeblendet zu markieren:

  • Ein Funktionstreiber oder Funktionsfiltertreiber kann das Betriebssystem auffordern, ein erfolgreich gestartetes Gerät auszublenden, indem er auf die IRP_MN_QUERY_PNP_DEVICE_STATE IRP reagiert. Wenn der IRP eintrifft, muss der Treiber das PNP_DEVICE_DONT_DISPLAY_UI Bit in IoStatus.Information in der Dispatchroutine des Treibers auf TRUE festlegen.

  • Unter Windows XP und höheren Versionen der Windows-Betriebssysteme kann ein Bustreiber oder Busfiltertreiber jedes gestartete oder anderweitige Gerät ausblenden, indem er auf die IRP_MN_QUERY_CAPABILITIES IRP reagiert. Wenn die IRP eintrifft, muss der Treiber den Parameter.DeviceCapabilities.NoDisplayInUI-Member in der Dispatchroutine des Treibers auf TRUE festlegen. In einigen Fällen muss ein Busfiltertreiber dieses Bit in einer Vervollständigungsroutine festlegen. Dieser zusätzliche Schritt ist erforderlich, wenn die Dispatchroutine des zugrunde liegenden Bustreibers alle Funktionsfelder, die andere Treiber festgelegt haben, fälschlicherweise löscht.

Ausblenden von Geräten mithilfe des ACPI-BIOS

Sie können ein Gerät im ACPI-BIOS als ausgeblendet markieren. Das BIOS kann eine _STA-Methode für das Gerät verfügbar machen. Die _STA-Methode gibt eine Bitmaske zurück. Bit 2 (Maskierung 0x4) gibt an, ob Geräte-Manager das Gerät standardmäßig sichtbar machen soll. Dieses Bit sollte 1 sein, wenn das Gerät sichtbar gemacht werden soll, andernfalls 0.

Das folgende Codebeispiel zeigt beispielsweise, wie ein USB-Controller auf dem Stammbus ausgeblendet wird.

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

In Microsoft Windows 2000 können Sie nur gestartete, funktionierende Geräte ausblenden. In Windows XP und höheren Versionen von Windows können Sie auch defekte Geräte ausblenden. Bit 3 (Maskierung 0x8), das von der _STA-Methode zurückgegeben wird, gibt an, ob ein Gerät ordnungsgemäß funktioniert. Dieses Bit ist 1, wenn das Gerät ordnungsgemäß funktioniert, andernfalls 0. Das folgende Codebeispiel zeigt beispielsweise, wie ein BIOS darauf hindeutet, dass ein USB-Controller beschädigt ist und ausgeblendet werden sollte:

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 

Hinweis Das Decodierungsbit (0x2) hat keine Relevanz für Geräte, die durch _ADR-Methoden beschrieben werden. Die vorherigen Codebeispiele funktionieren auch ohne den Decodierungsbitsatz. BIOS-Autoren müssen den Decodierungszustand nur für Geräte nachverfolgen, die mit _HID Methoden beschrieben werden.