On Wed, 18 Dec 2013 04:28:57 -0000, Hugo Florentino <h...@acdam.cu> wrote:
On Tue, 17 Dec 2013 13:21:30 -0000, Regan Heath wrote:
Is GetNativeSystemInfo your other solution? On the MSDN page for
GetNativeSystemInfo it recommends using IsWow64Process to detect if
you're running under WOW64, at which point you would then call
GetNativeSystemInfo.
I am not sure what GetNativeSystemInfo does if called from a 32 bit
exe on a 32 bit OS..
It seems to work. After all it makes sense, the native system is
actually 32 bits.
Cool. The reason I was unsure and the reason I do not agree that it
"makes sense" that it works, is the first paragraph on the MSDN page:
"Retrieves information about the current system to an application
**running under WOW64**. If the function is called from **a 64-bit
application**, it is equivalent to the GetSystemInfo function."
**emphasis mine**
It doesn't actually address the situation of calling it from a 32 bit
application NOT running under WOW64.
GetSystemInfo is callable from both 32 and 64 bit so I assume now, that
given that it works for you, that it is doing what it mentions above for a
64 bit application, and actually just calling GetSystemInfo.
You will probably find that calling GetSystemInfo works just as well as
what you're already doing.
I /know/ that the code in std.internal.windows.advapi32 which
dynamically loads and calls IsWow64Process will work, because we use
it here at work for this very purpose. It's also the simplest most
direct way to answer this specific question and it's already present,
tested and working in phobos .. so I would be inclined to use it, in
preference over GetNativeSystemInfo.
R
If after using IsWOW64Process a GetNativeSystemInfo must still be issued
like you mentioned earlier, I don't see the advantage over calling that
function directly in the first place.
Or am I missing something?
Yes, you're missing something :)
http://msdn.microsoft.com/en-us/library/windows/desktop/ms684139(v=vs.85).aspx
IsWow64Process returns (in the output parameter) if the 32 bit application
is running in WOW64. WOW64 *only* exists on a 64 bit OS. So, if true
this tells you you're on a 64 bit OS. You don't need an additional call
to GetNativeSystemInfo at all.
Further, the code is already in phobos so all you actually need to do is
check the isWow64 global boolean defined by
"std.internal.windows.advapi32". So, your code is as simple as:
import std.stdio;
import std.internal.windows.advapi32;
void main(string[] args)
{
writefln(isWow64 ? "yes" : "no");
}
R
--
Using Opera's revolutionary email client: http://www.opera.com/mail/