共用方式為


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