SRIOV_SET_POWER_STATE回呼函式 (pcivirt.h)
設定指定之PCI Express SR-IOV 虛擬函式的電源狀態, (VF) 。
語法
SRIOV_SET_POWER_STATE SriovSetPowerState;
NTSTATUS SriovSetPowerState(
[in] PVOID Context,
[in] USHORT VfIndex,
[in] DEVICE_POWER_STATE PowerState,
[in] BOOLEAN Wake
)
{...}
參數
[in] Context
驅動程式定義內容的指標。
[in] VfIndex
套用此電源狀態集作業之 VF 的以零起始的索引。
[in] PowerState
DEVICE_POWER_STATE類型值,指出要設定的 Dx 電源狀態。
[in] Wake
布爾值,指出是否要為PCI Express) 裝置 (PME 的喚醒訊號 (PME,因為它進入低電源狀態。 TRUE 表示裝置已處於狀態;否則為 FALSE。 如果 PowerState 為 PowerDeviceD0,此值必須是 FALSE。
傳回值
如果要求成功,請將 設定為 STATUS_SUCCESS。 否則,傳回適當的 NTSTATUS 程式代碼以指出錯誤狀況。
備註
此回呼函式是由實體函式實作, (PF) 驅動程式。 當系統想要變更虛擬函式的電源狀態時,就會叫用回呼。
PF 驅動程式會藉由設定SRIOV_DEVICE_INTERFACE_STANDARD的 SetVfPowerState 成員、設定 WDF_QUERY_INTERFACE_CONFIG 結構,以及呼叫 WdfDeviceAddQueryInterface 來註冊其實作。
以下是這個回呼函式的範例實作。
NTSTATUS
Virtualization_SetPowerState (
__inout PVOID Context,
USHORT VfIndex,
DEVICE_POWER_STATE PowerState,
BOOLEAN Wake
)
{
PDEVICE_CONTEXT deviceContext;
WDF_POWER_DEVICE_STATE wdfPowerState;
NTSTATUS status;
PAGED_CODE();
status = STATUS_SUCCESS;
TraceEvents(TRACE_LEVEL_VERBOSE, DBG_INTERFACE,
"Virtualization_SetPowerState received with \
VFIndex = %d, PowerState = %d, Wake = %d\n",
VfIndex, PowerState, Wake);
deviceContext = (PDEVICE_CONTEXT) Context;
if (VfIndex >= deviceContext->NumVFs)
{
TraceEvents(TRACE_LEVEL_ERROR, DBG_INTERFACE,
"VfIndex specified: %d was out of bounds. NumVFs: %d\n",
VfIndex, deviceContext->NumVFs);
return STATUS_INVALID_PARAMETER;
}
switch (PowerState)
{
case PowerDeviceD0:
wdfPowerState = WdfPowerDeviceD0;
break;
case PowerDeviceD1:
wdfPowerState = WdfPowerDeviceD1;
break;
case PowerDeviceD2:
wdfPowerState = WdfPowerDeviceD2;
break;
case PowerDeviceD3:
wdfPowerState = WdfPowerDeviceD3;
break;
default:
return STATUS_INVALID_PARAMETER;
}
WdfWaitLockAcquire(deviceContext->PowerStateLock, NULL);
deviceContext->VfContext[VfIndex].VfPowerDeviceState = wdfPowerState;
deviceContext->VfContext[VfIndex].VfWake = Wake;
WdfWaitLockRelease(deviceContext->PowerStateLock);
return status;
}
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 10 |
最低支援的伺服器 | Windows Server 2016 |
目標平台 | Windows |
標頭 | pcivirt.h |
IRQL | PASSIVE_LEVEL |