ntdll: Implemented RtlPcToFileHeader.
diff --git a/dlls/ntdll/loader.c b/dlls/ntdll/loader.c index aac48dc..eaf7cfa 100644 --- a/dlls/ntdll/loader.c +++ b/dlls/ntdll/loader.c
@@ -2225,6 +2225,22 @@ /*********************************************************************** + * RtlPcToFileHeader (NTDLL.@) + */ +PVOID WINAPI RtlPcToFileHeader( PVOID pc, PVOID *address ) +{ + LDR_MODULE *module; + PVOID ret = NULL; + + RtlEnterCriticalSection( &loader_section ); + if (!LdrFindEntryForAddress( pc, &module )) ret = module->BaseAddress; + RtlLeaveCriticalSection( &loader_section ); + *address = ret; + return ret; +} + + +/*********************************************************************** * NtLoadDriver (NTDLL.@) * ZwLoadDriver (NTDLL.@) */
diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec index 90afeb2..2950453 100644 --- a/dlls/ntdll/ntdll.spec +++ b/dlls/ntdll/ntdll.spec
@@ -753,7 +753,7 @@ @ stdcall RtlOemStringToUnicodeString(ptr ptr long) @ stdcall RtlOemToUnicodeN(ptr long ptr ptr long) @ stdcall RtlOpenCurrentUser(long ptr) -@ stub RtlPcToFileHeader +@ stdcall RtlPcToFileHeader(ptr ptr) @ stdcall RtlPinAtomInAtomTable(ptr long) # @ stub RtlPopFrame @ stdcall RtlPrefixString(ptr ptr long)
diff --git a/include/winternl.h b/include/winternl.h index 38d13c6..9eb270a 100644 --- a/include/winternl.h +++ b/include/winternl.h
@@ -2120,6 +2120,7 @@ NTSTATUS WINAPI RtlOemToUnicodeN(LPWSTR,DWORD,LPDWORD,LPCSTR,DWORD); NTSTATUS WINAPI RtlOpenCurrentUser(ACCESS_MASK,PHANDLE); +PVOID WINAPI RtlPcToFileHeader(PVOID,PVOID*); NTSTATUS WINAPI RtlPinAtomInAtomTable(RTL_ATOM_TABLE,RTL_ATOM); BOOLEAN WINAPI RtlPrefixString(const STRING*,const STRING*,BOOLEAN); BOOLEAN WINAPI RtlPrefixUnicodeString(const UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN);