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) |