use TpWaitForWork

https://x.com/saerxcit/status/1978065616259960992
This commit is contained in:
Rasta Mouse
2025-10-14 15:02:05 +01:00
parent 46cbf86178
commit c1b4df3ba3
2 changed files with 7 additions and 8 deletions
+6 -7
View File
@@ -28,10 +28,10 @@
#include "tp.h"
WINBASEAPI VOID NTAPI NTDLL$TpAllocWork (PTP_WORK*, PTP_WORK_CALLBACK, PVOID, PTP_CALLBACK_ENVIRON);
WINBASEAPI VOID NTAPI NTDLL$TpPostWork (PTP_WORK);
WINBASEAPI VOID NTAPI NTDLL$TpReleaseWork (PTP_WORK);
WINBASEAPI DWORD WINAPI KERNEL32$WaitForSingleObject (HANDLE, DWORD);
WINBASEAPI VOID NTAPI NTDLL$TpAllocWork (PTP_WORK*, PTP_WORK_CALLBACK, PVOID, PTP_CALLBACK_ENVIRON);
WINBASEAPI VOID NTAPI NTDLL$TpPostWork (PTP_WORK);
WINBASEAPI VOID NTAPI NTDLL$TpWaitForWork (PTP_WORK, BOOL);
WINBASEAPI VOID NTAPI NTDLL$TpReleaseWork (PTP_WORK);
void __attribute__((naked)) WorkCallback()
{
@@ -56,13 +56,12 @@ void __attribute__((naked)) WorkCallback()
);
}
VOID ProxyNtApi(NTARGS * args, DWORD delay)
VOID ProxyNtApi(NTARGS * args)
{
PTP_WORK WorkReturn = NULL;
NTDLL$TpAllocWork(&WorkReturn, (PTP_WORK_CALLBACK)WorkCallback, args, NULL);
NTDLL$TpPostWork(WorkReturn);
NTDLL$TpWaitForWork(WorkReturn, FALSE);
NTDLL$TpReleaseWork(WorkReturn);
KERNEL32$WaitForSingleObject((HANDLE)(-1), delay);
}
+1 -1
View File
@@ -12,4 +12,4 @@ typedef struct {
ULONG_PTR argument6;
} NTARGS;
VOID ProxyNtApi(NTARGS * args, DWORD delay);
VOID ProxyNtApi(NTARGS * args);