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