Metodo IAdapterPowerManagement::QueryDeviceCapabilities (portcls.h)

Il QueryDeviceCapabilities metodo viene chiamato da PortCls in risposta a un Plug and Play IRP_MN_QUERY_CAPABILITIES IRP.

Sintassi

NTSTATUS QueryDeviceCapabilities(
  [in] PDEVICE_CAPABILITIES PowerDeviceCaps
);

Parametri

[in] PowerDeviceCaps

Puntatore a una struttura di DEVICE_CAPABILITIES che specifica le funzionalità del dispositivo

Valore restituito

QueryDeviceCapabilities restituisce STATUS_SUCCESS se la chiamata ha avuto esito positivo. In caso contrario, il metodo restituisce un codice di errore appropriato.

Commenti

Questo metodo viene chiamato all'avvio del driver per ottenere le funzionalità per il dispositivo. Il metodo passa al driver dell'adattatore una struttura di funzionalità che definisce i mapping tra gli stati di alimentazione del sistema e gli stati di alimentazione del dispositivo. PortCls scrive i valori predefiniti per questi mapping nella struttura prima di chiamare il metodo . Durante la chiamata, il driver dell'adattatore ha la possibilità di modificare i mapping, se necessario.

In genere, il driver dell'adattatore non deve modificare queste impostazioni. Se il driver dell'adattatore deve eseguire l'override delle impostazioni predefinite, può modificare i mapping a uno stato di alimentazione del dispositivo più profondo (meno alimentato), ma non a uno stato di alimentazione del dispositivo più debole (più alimentato). Ad esempio, i mapping per S1 (PowerSystemSleeping1) possono essere modificati da D1 a D3, ma non in D0.

Per compilare la struttura PowerDeviceCaps per un dispositivo, il driver dell'adattatore deve chiamare PcRegisterAdapterPowerManagement per registrare l'interfaccia IAdapterPowerManagement in fase di avvio del dispositivo. Il sistema operativo esegue una query sui dispositivi prima di chiamare la routine di avvio del dispositivo del driver dell'adattatore.

Per modificare i mapping tra gli stati di alimentazione del sistema e gli stati di alimentazione del dispositivo, il driver dell'adattatore modifica i valori nella matrice DeviceState nella struttura PowerDeviceCaps . Questi mapping devono essere modificati solo se necessario. L'esempio di codice seguente illustra come eseguire il mapping dei mapping D1 a D3:

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

Il codice per il QueryDeviceCapabilities metodo deve risiedere nella memoria di paging.

Requisiti

Requisito Valore
Piattaforma di destinazione Universale
Intestazione portcls.h (include Portcls.h)

Vedi anche

DEVICE_CAPABILITIES

IAdapterPowerManagement

IRP_MN_QUERY_CAPABILITIES

PcRegisterAdapterPowerManagement