<!-- ##### SECTION Title ##### -->
Windows Compatibility Functions

<!-- ##### SECTION Short_Description ##### -->
UNIX emulation on Windows

<!-- ##### SECTION Long_Description ##### -->
<para>
These functions provide some level of UNIX emulation on the Windows platform.
If your application really needs the POSIX APIs, we suggest you try the Cygwin
project.
</para>

<!-- ##### SECTION See_Also ##### -->
<para>

</para>

<!-- ##### SECTION Stability_Level ##### -->


<!-- ##### SECTION Image ##### -->


<!-- ##### MACRO MAXPATHLEN ##### -->
<para>
Provided for UNIX emulation on Windows; equivalent to UNIX 
macro %MAXPATHLEN, which is the maximum length of a filename
(including full path).
</para>



<!-- ##### FUNCTION g_win32_error_message ##### -->
<para>

</para>

@error: 
@Returns: 


<!-- ##### FUNCTION g_win32_getlocale ##### -->
<para>

</para>

@void: 
@Returns: 


<!-- ##### FUNCTION g_win32_get_package_installation_directory ##### -->
<para>

</para>

@package: 
@dll_name: 
@Returns: 


<!-- ##### FUNCTION g_win32_get_package_installation_directory_of_module ##### -->
<para>

</para>

@hmodule: 
@Returns: 


<!-- ##### FUNCTION g_win32_get_package_installation_subdirectory ##### -->
<para>

</para>

@package: 
@dll_name: 
@subdir: 
@Returns: 


<!-- ##### FUNCTION g_win32_get_windows_version ##### -->
<para>

</para>

@void: 
@Returns: 


<!-- ##### FUNCTION g_win32_locale_filename_from_utf8 ##### -->
<para>

</para>

@utf8filename: 
@Returns: 


<!-- ##### MACRO G_WIN32_DLLMAIN_FOR_DLL_NAME ##### -->
<para>
On Windows, this macro defines a DllMain() function that stores the actual 
DLL name that the code being compiled will be included in.
</para>
<para>
On non-Windows platforms, expands to nothing.
</para>

@static: empty or "static".
@dll_name: the name of the (pointer to the) char array where the DLL name 
   will be stored. If this is used, you must also include 
   <filename>windows.h</filename>. If you need a more complex DLL entry 
   point function, you cannot use this.


<!-- ##### MACRO G_WIN32_HAVE_WIDECHAR_API ##### -->
<para>
On Windows, this macro defines an expression which evaluates to %TRUE
if the code is running on a version of Windows where the wide
character versions of the Win32 API functions, and the wide chaacter
versions of the C library functions work. (They are always present in
the DLLs, but don't work on Windows 9x and Me.)
</para>
<para>
On non-Windows platforms, it is not defined.
</para>

@Since: 2.6


<!-- ##### MACRO G_WIN32_IS_NT_BASED ##### -->
<para>
On Windows, this macro defines an expression which evaluates to %TRUE 
if the code is running on an NT-based Windows operating system.
</para>
<para>
On non-Windows platforms, it is not defined.
</para>

@Since: 2.6


