7030249: Eliminate use of LoadLibrary and other clean-ups

Dmytro Sheyko dmytro_sheyko at hotmail.com
Tue Mar 29 16:55:33 UTC 2011

Maybe we should follow this approach (i.e. prefer GetModuleHandleEx to GetModuleHandle) in other places as well.

I found there suspect cases:

./jdk/src/windows/native/java/lang/java_props_md.c:                GetModuleHandle(TEXT("kernel32.dll")),

./jdk/test/java/util/Locale/data/deflocale.c:        HMODULE hmod = GetModuleHandle(L"kernel32");

./hotspot/src/os/windows/vm/perfMemory_windows.cpp:       GetProcAddress(GetModuleHandle(TEXT("advapi32.dll")),

./hotspot/src/os/windows/vm/os_windows.cpp:  hmod = GetModuleHandle("NTDLL.DLL");
./hotspot/src/os/windows/vm/os_windows.cpp:        HMODULE hKernel32 = GetModuleHandle(TEXT("kernel32.dll"));

./hotspot/src/os/windows/vm/os_windows.cpp:  HINSTANCE kernel32 = LoadLibrary("Kernel32.DLL") ;
./hotspot/src/os/windows/vm/os_windows.cpp:  HINSTANCE psapi = LoadLibrary( "PSAPI.DLL" ) ;

Date: Tue, 29 Mar 2011 16:49:50 +0100
From: Alan.Bateman at oracle.com
To: dmytro_sheyko at hotmail.com
CC: core-libs-dev at openjdk.java.net
Subject: Re: 7030249: Eliminate use of LoadLibrary and other clean-ups

  Message body

Dmytro Sheyko wrote:



Why we obtain HMODULE for kernel32 this way:


     // get handle to kernel32



                            (LPCWSTR)&CreateFileW, &h) != 0)





instead of


     handle = GetModuleHandle("kernel32");

GetModuleHandleExW allows you to provide the address of a function in
the library that you need the handle for and so you avoid issues when
multiple libraries with the same name are loaded.



Also according to MSDN GetModuleHandleEx requires at minimum "Windows
XP" or "Windows Server 2003". It means that we do not support "Windows
2000", right?

I don't think it's been possible to install or run jdk7 on Windows 2000
for some time.


More information about the core-libs-dev mailing list