internal static extern void RtlCreateUserThread(SafeProcessHandle processHandle, IntPtr threadSecurity, bool createSuspended, int stackZeroBits, IntPtr stackReserved, IntPtr stackCommit, IntPtr startAddress, IntPtr parameter, out SafeThreadHandle threadHandle, int clientId);
internal static extern void ZwCreateThreadEx(out SafeThreadHandle threadHandle, AccessMask desiredAccess, IntPtr objectAttributes, SafeProcessHandle processHandle, IntPtr startAddress, IntPtr parameter, CreationFlags creationFlags, int stackZeroBits, int sizeOfStack, int maximumStackSize, IntPtr attributeList);
internal static extern bool Wow64SetThreadContext(SafeThreadHandle threadHandle, IntPtr wow64Context);
internal static extern int SuspendThread(SafeThreadHandle threadHandle);
internal static extern bool SetThreadContext(SafeThreadHandle threadHandle, IntPtr context);
internal static extern int ResumeThread(SafeThreadHandle threadHandle);
internal static extern bool QueueUserAPC(IntPtr apc, SafeThreadHandle threadHandle, IntPtr data);