RtlNtStatusToDosErrorViaImport

typedef ULONG(NTAPI* RTLNTSTATUSTODOSERROR)(NTSTATUS);

DWORD RtlNtStatusToDosErrorViaImport(_In_ NTSTATUS Status)
{
	RTLNTSTATUSTODOSERROR RtlNtStatusToDosError;
	HMODULE hModule = NULL;
	DWORD dwError = ERROR_SUCCESS;

	hModule = GetModuleHandleW(L"ntdll.dll");
	if (hModule == NULL)
		return -1;

	RtlNtStatusToDosError = (RTLNTSTATUSTODOSERROR)GetProcAddress(hModule, "RtlNtStatusToDosError");
	if (!RtlNtStatusToDosError)
		return -1;

	dwError = RtlNtStatusToDosError(Status);

	RtlNtStatusToDosError = NULL;

	return dwError;
}

Last updated