共用方式為


IAdapterPowerManagement::QueryDeviceCapabilities 方法 (portcls.h)

QueryDeviceCapabilities 方法是由 PortCls 呼叫,以回應隨插即用 IRP_MN_QUERY_CAPABILITIES IRP。

語法

NTSTATUS QueryDeviceCapabilities(
  [in] PDEVICE_CAPABILITIES PowerDeviceCaps
);

參數

[in] PowerDeviceCaps

指定裝置功能之 DEVICE_CAPABILITIES 結構的指標

傳回值

如果呼叫成功,QueryDeviceCapabilities 會傳回STATUS_SUCCESS。 否則,方法會傳回適當的錯誤碼。

言論

這個方法會在驅動程序啟動時呼叫,以取得裝置的功能。 方法會將功能結構傳遞給配接器驅動程式,以定義系統電源狀態與裝置電源狀態之間的對應。 PortCls 會在呼叫 方法之前,將這些對應的預設值寫入結構中。 在呼叫期間,適配卡驅動程式有機會視需要編輯對應。

一般而言,配接器驅動程序不應該變更這些設定。 如果配接器驅動程式必須覆寫預設值,它可以將對應變更為更深層(電源不足)的裝置電源狀態,但不能變更為較弱(較電源)的裝置電源狀態。 例如,S1 (PowerSystemSleeping1) 的對應可以從 D1 變更為 D3,但不能變更為 D0。

若要填入裝置的 PowerDeviceCaps 結構,配接器驅動程式應該呼叫 PcRegisterAdapterPowerManagement,以在裝置啟動時註冊 IAdapterPowerManagement 介面。 作系統會在呼叫配接器驅動程式的裝置啟動例程之前查詢裝置。

為了變更系統電源狀態與裝置電源狀態之間的對應,配接器驅動程序會變更 PowerDeviceCaps 結構中 DeviceState 陣列中的值。 這些對應只有在必要時才應變更。 下列程式代碼範例示範如何將 D1 對應對應至 D3:

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

QueryDeviceCapabilities 方法的程式代碼必須位於分頁記憶體中。

要求

要求 價值
目標平臺 普遍
標頭 portcls.h (包括 Portcls.h)

另請參閱

DEVICE_CAPABILITIES

IAdapterPowerManagement

IRP_MN_QUERY_CAPABILITIES

PcRegisterAdapterPowerManagement