in cortado/rtas/src/LoadLib-Callback64.cpp [35:61]
HMODULE queueLoadLibrary(WCHAR *libraryName, BOOL swtch) {
IMPORTAPI(L"NTDLL.dll", NtWaitForSingleObject, NTSTATUS, HANDLE, BOOLEAN,
PLARGE_INTEGER);
if (swtch) {
IMPORTAPI(L"NTDLL.dll", RtlQueueWorkItem, NTSTATUS, PVOID, PVOID, ULONG);
if (NT_SUCCESS(RtlQueueWorkItem(&LoadLibraryW, (PVOID)libraryName,
WT_EXECUTEDEFAULT))) {
LARGE_INTEGER timeout;
timeout.QuadPart = -500000;
NtWaitForSingleObject(NtCurrentProcess(), FALSE, &timeout);
}
} else {
IMPORTAPI(L"NTDLL.dll", RtlRegisterWait, NTSTATUS, PHANDLE, HANDLE, PVOID,
PVOID, ULONG, ULONG);
HANDLE newWaitObject;
HANDLE eventObject = CreateEventW(NULL, FALSE, FALSE, NULL);
if (NT_SUCCESS(RtlRegisterWait(&newWaitObject, eventObject, LoadLibraryW,
(PVOID)libraryName, 0, WT_EXECUTEDEFAULT))) {
WaitForSingleObject(eventObject, 500);
}
}
return getModuleHandle(libraryName);
}