}
/*++
- * @name NtQueueApcThread
+ * @name NtQueueApcThreadEx
* NT4
*
* This routine is used to queue an APC from user-mode for the specified
* @param ThreadHandle
* Handle to the Thread.
* This handle must have THREAD_SET_CONTEXT privileges.
+ *
+ * @param UserApcReserveHandle
+ * Optional handle to reserve object (introduced in Windows 7), providing ability to
+ * reserve memory before performing stability-critical parts of code.
*
* @param ApcRoutine
* Pointer to the APC Routine to call when the APC executes.
*--*/
NTSTATUS
NTAPI
-NtQueueApcThread(IN HANDLE ThreadHandle,
+NtQueueApcThreadEx(IN HANDLE ThreadHandle,
+ IN OPTIONAL HANDLE UserApcReserveHandle,
IN PKNORMAL_ROUTINE ApcRoutine,
IN PVOID NormalContext,
- IN PVOID SystemArgument1,
- IN PVOID SystemArgument2)
+ IN OPTIONAL PVOID SystemArgument1,
+ IN OPTIONAL PVOID SystemArgument2)
{
PKAPC Apc;
PETHREAD Thread;
return Status;
}
+/*++
+ * @name NtQueueApcThread
+ * NT4
+ *
+ * This routine is used to queue an APC from user-mode for the specified
+ * thread.
+ *
+ * @param ThreadHandle
+ * Handle to the Thread.
+ * This handle must have THREAD_SET_CONTEXT privileges.
+ *
+ * @param ApcRoutine
+ * Pointer to the APC Routine to call when the APC executes.
+ *
+ * @param NormalContext
+ * Pointer to the context to send to the Normal Routine.
+ *
+ * @param SystemArgument[1-2]
+ * Pointer to a set of two parameters that contain untyped data.
+ *
+ * @return STATUS_SUCCESS or failure cute from associated calls.
+ *
+ * @remarks The thread must enter an alertable wait before the APC will be
+ * delivered.
+ *
+ *--*/
+NTSTATUS
+NTAPI
+NtQueueApcThread(IN HANDLE ThreadHandle,
+ IN PKNORMAL_ROUTINE ApcRoutine,
+ IN PVOID NormalContext,
+ IN PVOID SystemArgument1,
+ IN PVOID SystemArgument2)
+{
+ return NtQueueApcThreadEx(ThreadHandle, NULL, ApcRoutine, NormalContext, SystemArgument1, SystemArgument2);
+}
+
/* EOF */
_In_opt_ PVOID SystemArgument2
);
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtQueueApcThreadEx(
+ _In_ HANDLE ThreadHandle,
+ _In_opt_ HANDLE UserApcReserveHandle,
+ _In_ PKNORMAL_ROUTINE ApcRoutine,
+ _In_opt_ PVOID NormalContext,
+ _In_opt_ PVOID SystemArgument1,
+ _In_opt_ PVOID SystemArgument2
+);
+
NTSYSCALLAPI
NTSTATUS
NTAPI