<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Tahoma
}
--></style>
</head>
<body class='hmmessage'>
Maybe we should follow this approach (i.e. prefer GetModuleHandleEx to GetModuleHandle) in other places as well.<br><br>I found there suspect cases:<br><br>./jdk/src/windows/native/java/lang/java_props_md.c:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GetModuleHandle(TEXT("kernel32.dll")),<br>
./jdk/test/java/util/Locale/data/deflocale.c:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HMODULE hmod = GetModuleHandle(L"kernel32");<br>
<br>./hotspot/src/os/windows/vm/perfMemory_windows.cpp:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GetProcAddress(GetModuleHandle(TEXT("advapi32.dll")),<br>
./hotspot/src/os/windows/vm/os_windows.cpp:&nbsp; hmod = GetModuleHandle("NTDLL.DLL");<br>./hotspot/src/os/windows/vm/os_windows.cpp:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HMODULE hKernel32 = GetModuleHandle(TEXT("kernel32.dll"));<br><br>./hotspot/src/os/windows/vm/os_windows.cpp:&nbsp; HINSTANCE kernel32 = LoadLibrary("Kernel32.DLL") ;<br>./hotspot/src/os/windows/vm/os_windows.cpp:&nbsp; HINSTANCE psapi = LoadLibrary( "PSAPI.DLL" ) ;<br><br>Regards,<br>Dmytro<br><hr id="stopSpelling">Date: Tue, 29 Mar 2011 16:49:50 +0100<br>From: Alan.Bateman@oracle.com<br>To: dmytro_sheyko@hotmail.com<br>CC: core-libs-dev@openjdk.java.net<br>Subject: Re: 7030249: Eliminate use of LoadLibrary and other clean-ups<br><br>


<meta http-equiv="Content-Type" content="text/html; charset=unicode">
<meta name="Generator" content="Microsoft SafeHTML">
  
  <title>Message body</title>


Dmytro Sheyko wrote:
<blockquote cite="mid:SNT137-w46E5645717135948943EB08ABD0@phx.gbl">
  <style>
.ExternalClass .ecxhmmessage P
{padding:0px;}
.ExternalClass body.ecxhmmessage
{font-size:10pt;font-family:Tahoma;}

</style>
  <style>
.ExternalClass .ecxhmmessage P
{padding:0px;}
.ExternalClass body.ecxhmmessage
{font-size:10pt;font-family:Tahoma;}

</style>:<br>
  <br>
Why we obtain HMODULE for kernel32 this way:<br>
  <br>
&nbsp;&nbsp;&nbsp;&nbsp; // get handle to kernel32<br>
&nbsp;&nbsp;&nbsp;&nbsp; if (GetModuleHandleExW((GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS |<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT),<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (LPCWSTR)&amp;CreateFileW, &amp;h) != 0)<br>
&nbsp;&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...<br>
  <br>
  <br>
instead of<br>
  <br>
&nbsp;&nbsp;&nbsp;&nbsp; handle = GetModuleHandle("kernel32");<br>
</blockquote>
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.<br>
<br>
<blockquote cite="mid:SNT137-w46E5645717135948943EB08ABD0@phx.gbl">:<br>
  <br>
Also according to MSDN GetModuleHandleEx requires at minimum "Windows
XP" or "Windows Server 2003". It means that we do not support "Windows
2000", right?<br>
</blockquote>
I don't think it's been possible to install or run jdk7 on Windows 2000
for some time.<br>
<br>
-Alan<br>                                               </body>
</html>