QueueUserAPC2 函式 (processthreadsapi.h)
將使用者模式 異步過程調用 (APC) 物件新增至指定線程的 APC 佇列。
語法
BOOL QueueUserAPC2(
PAPCFUNC ApcRoutine,
HANDLE Thread,
ULONG_PTR Data,
QUEUE_USER_APC_FLAGS Flags
);
參數
ApcRoutine
當指定的線程執行可警示的等候作業時,所要呼叫之應用程式提供的APC函式指標。 如需詳細資訊,請參閱 APCProc。
對於特殊的使用者模式 APC,不需要警示的等候。 See Remarks for more information about special user-mode APCs.
Thread
線程的句柄。 句柄必須具有 THREAD_SET_CONTEXT 訪問許可權。 如需詳細資訊,請參閱 同步處理物件安全性和訪問許可權。
Data
傳遞至 ApcRoutine 參數所指向之 APC 函式的單一值。
Flags
來自 QUEUE_USER_APC_FLAGS 列舉的值 ,可修改使用者模式 APC 的行為。
傳回值
如果函式成功,則傳回非零的值。
如果此函式失敗,則傳回值為零。 若要取得擴充的錯誤資訊,請呼叫 GetLastError。
備註
只有在目標線程處於可警示狀態時,才會執行一般使用者模式 APC。 如需一般使用者模式 APC 的其他備註,請參閱 QueueUserAPC 函 式。
即使目標線程不是處於可警示狀態,特殊使用者模式 APC 仍會一律執行。 例如,如果目標線程目前正在執行使用者模式程式代碼,或目標線程目前正在執行可警示的等候,則目標線程將會立即中斷以進行APC執行。 如果目標線程正在執行系統呼叫,或執行不可警示的等候,則系統會在系統呼叫或無法警示的等候完成之後執行 APC, (等候不會中斷) 。
由於特殊使用者模式 APC 的執行不會與目標線程同步,因此必須特別小心 (超出多線程和同步處理) 的一般需求。 例如,取得任何鎖定時,中斷的目標線程可能已經擁有鎖定,或是在取得或釋放鎖定的過程中。 此外,因為沒有任何功能可以封鎖線程接收特殊使用者模式 APC,所以特殊使用者模式 APC 可以在已經執行特殊使用者模式 APC 的目標線程上執行。
目前,只有原生架構才支援特殊使用者模式 APC,而不是在 WoW 下執行時。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 11 (組建 22000) |
最低支援的伺服器 | Windows Server 2022 (組建 20348) |
目標平台 | Windows |
標頭 | processthreadsapi.h (包含 Windows.h) |
程式庫 | Kernel32.lib |
DLL | Kernel32.dll |