Module: wine Branch: master Commit: 447fda5206cf8df0648f4d694e0d9851b206e6ac URL: http://source.winehq.org/git/wine.git/?a=commit;h=447fda5206cf8df0648f4d694e...
Author: Alexandre Julliard julliard@winehq.org Date: Wed May 16 16:39:29 2007 +0200
ntdll: Implemented LdrAddRefDll.
---
dlls/ntdll/loader.c | 24 ++++++++++++++++++++++++ dlls/ntdll/ntdll.spec | 2 +- include/winternl.h | 1 + 3 files changed, 26 insertions(+), 1 deletions(-)
diff --git a/dlls/ntdll/loader.c b/dlls/ntdll/loader.c index 7fee9bc..8d72936 100644 --- a/dlls/ntdll/loader.c +++ b/dlls/ntdll/loader.c @@ -1821,6 +1821,30 @@ NTSTATUS WINAPI LdrGetDllHandle( LPCWSTR load_path, ULONG flags, const UNICODE_S
/****************************************************************** + * LdrAddRefDll (NTDLL.@) + */ +NTSTATUS WINAPI LdrAddRefDll( ULONG flags, HMODULE module ) +{ + NTSTATUS ret = STATUS_SUCCESS; + WINE_MODREF *wm; + + if (flags) FIXME( "%p flags %x not implemented\n", module, flags ); + + RtlEnterCriticalSection( &loader_section ); + + if ((wm = get_modref( module ))) + { + if (wm->ldr.LoadCount != -1) wm->ldr.LoadCount++; + TRACE( "(%s) ldr.LoadCount: %d\n", debugstr_w(wm->ldr.BaseDllName.Buffer), wm->ldr.LoadCount ); + } + else ret = STATUS_INVALID_PARAMETER; + + RtlLeaveCriticalSection( &loader_section ); + return ret; +} + + +/****************************************************************** * LdrQueryProcessModuleInformation * */ diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec index eeba2e1..3b26880 100644 --- a/dlls/ntdll/ntdll.spec +++ b/dlls/ntdll/ntdll.spec @@ -50,7 +50,7 @@ @ stub KiUserExceptionDispatcher # @ stub LdrAccessOutOfProcessResource @ stdcall LdrAccessResource(long ptr ptr ptr) -# @ stub LdrAddRefDll +@ stdcall LdrAddRefDll(long ptr) # @ stub LdrAlternateResourcesEnabled # @ stub LdrCreateOutOfProcessImage # @ stub LdrDestroyOutOfProcessImage diff --git a/include/winternl.h b/include/winternl.h index b75519e..8b650a9 100644 --- a/include/winternl.h +++ b/include/winternl.h @@ -1731,6 +1731,7 @@ NTSTATUS WINAPIV DbgPrint(LPCSTR fmt, ...); NTSTATUS WINAPIV DbgPrintEx(ULONG iComponentId, ULONG Level, LPCSTR fmt, ...);
NTSTATUS WINAPI LdrAccessResource(HMODULE,const IMAGE_RESOURCE_DATA_ENTRY*,void**,PULONG); +NTSTATUS WINAPI LdrAddRefDll(ULONG,HMODULE); NTSTATUS WINAPI LdrFindResourceDirectory_U(HMODULE,const LDR_RESOURCE_INFO*,ULONG,const IMAGE_RESOURCE_DIRECTORY**); NTSTATUS WINAPI LdrFindResource_U(HMODULE,const LDR_RESOURCE_INFO*,ULONG,const IMAGE_RESOURCE_DATA_ENTRY**); NTSTATUS WINAPI LdrGetDllHandle(LPCWSTR, ULONG, const UNICODE_STRING*, HMODULE*);