ursSetPoHandle 函式 (ursdevice.h)
向電源管理架構註冊並刪除用戶端驅動程序的註冊, (PoFx) 。
語法
void UrsSetPoHandle(
[in] WDFDEVICE Device,
[in] POHANDLE PoHandle
);
參數
[in] Device
用戶端驅動程式在先前呼叫 WdfDeviceCreate 中所擷取之架構裝置物件的句柄。
[in] PoHandle
句柄,表示向PoFx註冊裝置。 用戶端驅動程式會從 EvtDeviceWdmPostPoFxRegisterDeviceDevice 和 EvtDeviceWdmPrePoFxUnregisterDevice 回 呼函式中的 WDF 接收此句柄。
傳回值
無
備註
雙角色控制器的用戶端驅動程式必須是電源原則擁有者。 驅動程式可以從電源管理架構接收通知, (PoFx) 。 若要這樣做,在呼叫 UrsDeviceInitialize 之後,驅動程式必須註冊 PoFx 回呼函式。 用戶端驅動程式會直接向電源架構註冊裝置,或從 EvtDeviceWdmPostPoFxRegisterDevice 中的 WDF 取得 POHANDLE。 註冊成功之後,驅動程式會提供USB雙角色類別延伸模組的句柄。
在用戶端驅動程序實作 EvtDeviceWdmPostPoFxRegisterDevice 回呼函式中,驅動程式應該藉由傳遞收到的句柄來呼叫 UrsSetPoHandle 。 在某些平臺上,類別延伸模組可能會使用POHANDLE來電源管理控制器。 相反地,在類別延伸模組刪除Power Framework的註冊之前,它會叫用客戶端驅動程式的 EvtDeviceWdmPrePoFxUnregisterDevice 實作。 驅動程式預期會傳遞 NULL 作為 PoHandle 值來呼叫 UrsSetPoHandle 。
範例
EVT_WDFDEVICE_WDM_POST_PO_FX_REGISTER_DEVICE EvtDevicePostPoFxRegister;
EVT_WDFDEVICE_WDM_PRE_PO_FX_UNREGISTER_DEVICE EvtDevicePrePoFxUnregister;
EvtDriverDeviceAdd (
_In_ WDFDRIVER Driver,
_Inout_ PWDFDEVICE_INIT DeviceInit
)
{
...
WDFDEVICE device;
NTSTATUS status;
...
WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS idleSettings;
WDF_POWER_FRAMEWORK_SETTINGS poFxSettings;
...
TRY {
WDF_POWER_FRAMEWORK_SETTINGS_INIT(&poFxSettings);
poFxSettings.EvtDeviceWdmPostPoFxRegisterDevice = EvtDevicePostPoFxRegister;
poFxSettings.EvtDeviceWdmPrePoFxUnregisterDevice = EvtDevicePrePoFxUnregister;
status = WdfDeviceWdmAssignPowerFrameworkSettings(device, &poFxSettings);
if (!NT_SUCCESS(status)) {
// WdfDeviceWdmAssignPowerFrameworkSettings failed.
}
WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS_INIT(&idleSettings, IdleCannotWakeFromS0);
idleSettings.IdleTimeoutType = SystemManagedIdleTimeout;
status = WdfDeviceAssignS0IdleSettings(device, &idleSettings);
if (!NT_SUCCESS(status)) {
// WdfDeviceAssignS0IdleSettings failed.
}
} FINALLY {
}
..
}
NTSTATUS
EvtDevicePostPoFxRegister (
_In_ WDFDEVICE Device,
_In_ POHANDLE PoHandle
)
{
UrsSetPoHandle(Device, PoHandle);
return STATUS_SUCCESS;
}
VOID
EvtDevicePrePoFxUnregister (
_In_ WDFDEVICE Device,
_In_ POHANDLE PoHandle
)
{
UNREFERENCED_PARAMETER(PoHandle);
UrsSetPoHandle(Device, NULL);
}
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 10 |
最低支援的伺服器 | Windows Server 2016 |
目標平台 | Windows |
最低 KMDF 版本 | 1.15 |
標頭 | ursdevice.h (包含 Urscx.h) |
程式庫 | Urscxstub.lib |
IRQL | PASSIVE_LEVEL |
另請參閱
EvtDeviceWdmPostPoFxRegisterDevice
EvtDeviceWdmPrePoFxUnregisterDevice