boostorg / winapi

Windows API declarations without <windows.h>, for internal Boost use.
62 stars 58 forks source link

Update dll.hpp with WinAPI declarations required by Boost.DLL library #9

Closed apolukhin closed 8 years ago

apolukhin commented 8 years ago

The file is copied from Boost.DLL/include/boost/detail/winapi/dll2.hpp

apolukhin commented 8 years ago

If these constants are only supported from Windows 8, their definition should probably be conditioned on BOOST_USE_WINAPI_VERSION, shouldn't it?

This is a tricky question. They are ready out-of-the-box in Windows8, but previous versions of Windows with KB2533623 update also could use it. There's no right way to check those flags at compile time and MSDN recommends some runtime tricks to ensure that those falgs do work.

I've just made sure that they are not used in Boost.DLL any more and removed them...

Does Windows SDK define both these structures? Shouldn't there be just one structure defined differently for different bitness?

Actually Windows SDK defines 3 different structures: _MEMORY_BASIC_INFORMATION, _MEMORY_BASIC_INFORMATION32, _MEMORY_BASIC_INFORMATION64. VirtualQuery always uses _MEMORY_BASIC_INFORMATION whose representation depends on bitness.

Left the boost::detail::winapi::MEMORY_BASIC_INFORMATION_ structure only.

All the other issues were fixed according to your requirements.

Lastique commented 8 years ago

Committed a slightly corrected version of this PR as https://github.com/boostorg/winapi/commit/9ecf1c1b1705e16b64689e85ccca59b5b1dda610.

apolukhin commented 8 years ago

Thanks, works well.