IAdapterPowerManagement::QueryDeviceCapabilities-Methode (portcls.h)

Die QueryDeviceCapabilities -Methode wird von PortCls als Reaktion auf eine Plug & Play IRP_MN_QUERY_CAPABILITIES IRP aufgerufen.

Syntax

NTSTATUS QueryDeviceCapabilities(
  [in] PDEVICE_CAPABILITIES PowerDeviceCaps
);

Parameter

[in] PowerDeviceCaps

Zeiger auf eine DEVICE_CAPABILITIES-Struktur , die die Funktionen des Geräts angibt

Rückgabewert

QueryDeviceCapabilities gibt STATUS_SUCCESS zurück, wenn der Aufruf erfolgreich war. Andernfalls gibt die Methode einen geeigneten Fehlercode zurück.

Hinweise

Diese Methode wird beim Start des Treibers aufgerufen, um die Funktionen für das Gerät abzurufen. Die -Methode übergibt an den Adaptertreiber eine Funktionsstruktur, die die Zuordnungen zwischen Systemleistungszuständen und Geräteleistungszuständen definiert. PortCls schreibt die Standardwerte für diese Zuordnungen in die -Struktur, bevor die -Methode aufgerufen wird. Während des Aufrufs hat der Adaptertreiber bei Bedarf die Möglichkeit, die Zuordnungen zu bearbeiten.

In der Regel sollte der Adaptertreiber diese Einstellungen nicht ändern. Wenn der Adaptertreiber die Standardwerte außer Kraft setzen muss, kann er die Zuordnungen in einen tieferen (weniger energieintensiven) Gerätestromzustand ändern, aber nicht in einen schwächeren (leistungsstärkeren) Gerätestromzustand. Beispielsweise können die Zuordnungen für S1 (PowerSystemSleeping1) von D1 in D3, aber nicht in D0 geändert werden.

Um die PowerDeviceCaps-Struktur für ein Gerät auszufüllen, sollte der Adaptertreiber PcRegisterAdapterPowerManagement aufrufen, um die IAdapterPowerManagement-Schnittstelle zum Zeitpunkt des Gerätestarts zu registrieren. Das Betriebssystem fragt Geräte ab, bevor die Gerätestartroutine des Adaptertreibers aufgerufen wird.

Um die Zuordnungen zwischen Systemstromzuständen und Gerätestromzuständen zu ändern, ändert der Adaptertreiber die Werte im DeviceState-Array in der PowerDeviceCaps-Struktur . Diese Zuordnungen sollten nur bei Bedarf geändert werden. Im folgenden Codebeispiel wird gezeigt, wie D1-Zuordnungen zu D3 zugeordnet werden:

  for (i=ULONG(PowerSystemWorking); i<=ULONG(PowerSystemShutdown); i++)
      {
          if (PowerDeviceCaps->DeviceState[i] == PowerDeviceD1)
          {
              PowerDeviceCaps->DeviceState[i] = PowerDeviceD3;
          }
      }

Der Code für die QueryDeviceCapabilities -Methode muss sich im ausgelagerten Arbeitsspeicher befinden.

Anforderungen

Anforderung Wert
Zielplattform Universell
Header portcls.h (portcls.h einschließen)

Weitere Informationen

DEVICE_CAPABILITIES

IAdapterPowerManagement

IRP_MN_QUERY_CAPABILITIES

PcRegisterAdapterPowerManagement