<!-- ##### 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 ##### -->


<!-- ##### 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>



<!-- ##### MACRO pipe ##### -->
<para>
Provided for UNIX emulation on Windows; see documentation for <function>pipe()</function>
in any UNIX manual.
</para>

@phandles: file descriptors, the first one for reading, the second one for writing.


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

</para>

@error: 
@Returns: 


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

</para>

@Returns: 


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

</para>

@package: 
@dll_name: 
@Returns: 


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

</para>

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


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

</para>

@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 <function>DllMain()</function> 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


