我正在開發Windows設備驅動程序,並且需要將系統關閉的執行延遲約10秒。我使用下面的代碼我的司機的DispatchPower()函數中:延遲執行IRP_MN_SET_POWER
NTSTATUS DispatchPower(
__in struct _DEVICE_OBJECT *DeviceObject,
__in struct _IRP *Irp
)
{
switch(stack->MinorFunction)
{
case IRP_MN_SET_POWER:
delay_time.QuadPart = WDF_REL_TIMEOUT_IN_SEC(10);
KeDelayExecutionThread(KernelMode, FALSE, &delay_time);
}
}
但似乎KeDelayExecutionThread()立即返回,而無需等待?有什麼建議麼?
感謝,
STATUS_ALERTED意味着有人提醒你的線程與無證ZwAlertThread API。 STATUS_USER_APC意味着APC排隊到該線程,例如使用Win32 API QueueUserApc。 – snoone
不知道'ZwAlertThread'(聽起來像一個醜陋的黑客)。我認爲''STATUS_USER_APC'被執行後的**被執行後**被返回。至少在可警告的用戶模式等待中這是如此 – valdo