ntdll,NtQueueApcThreadEx (kernel32)
Last changed: -81.65.88.37

.
Summary
Adds a user-mode asynchronous procedure call (APC) object to the APC queue of the specified thread via a system call. Since Windows 10 1809, it also allows to make Special User APC when called with the correct QUEUE_USER_APC_FLAGS.

C# Signature:

[DllImport("kernel32.dll", SetLastError=true)]
static extern IntPtr NtQueueApcThreadEx(IntPtr ThreadHandle, UInt32 UserApcReserveHandle, IntPtr ApcRoutine, IntPtr ApcArgument1, IntPtr ApcArgument2, IntPtr ApcArgument3)

User-Defined Types:

None.

Notes:

ThreadHandle : handle to any Thread Object, including caller's thread.

UserApcReserveHandle : enum between QUEUE_USER_APC_FLAGS_NONE, QUEUE_USER_APC_FLAGS_SPECIAL_USER_APC and QUEUE_USER_APC_FLAGS_MAX_VALUE.

Currently, only QUEUE_USER_APC_FLAGS_SPECIAL_USER_APC is supported.

ApcRoutine : entry point to user APC routine.

ApcArgument1, ApcArgument2, and ApcArgument3 are optional and could be Zero.

Documentation
This function is undocumented on MSDN.