diff options
Diffstat (limited to 'winsup/cygwin/local_includes/winlean.h')
-rw-r--r-- | winsup/cygwin/local_includes/winlean.h | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/winsup/cygwin/local_includes/winlean.h b/winsup/cygwin/local_includes/winlean.h new file mode 100644 index 000000000..9b30b6557 --- /dev/null +++ b/winsup/cygwin/local_includes/winlean.h @@ -0,0 +1,97 @@ +/* winlean.h - Standard "lean" windows include + +This file is part of Cygwin. + +This software is a copyrighted work licensed under the terms of the +Cygwin license. Please consult the file "CYGWIN_LICENSE" for +details. */ + +#ifndef _WINLEAN_H +#define _WINLEAN_H 1 +#define WIN32_LEAN_AND_MEAN 1 + +/* The following macros have to be defined, otherwise the autoload mechanism + in autoload.cc leads to "multiple definition" errors. The macros control + the declarations of symbols in the Mingw64 w32api headers. If they are + not defined, a DECLSPEC_IMPORT will be added to the symbol declarations. + This leads to a definition of the symbols in the sources using the + autoloaded symbols, which in turn clashes with the definition in the + w32api library exporting the symbols. */ +#define _ADVAPI32_ +#define _AUTHZ_ +#define _DSGETDCAPI_ +#define _GDI32_ +#define _KERNEL32_ +#define _NORMALIZE_ +#define _OLE32_ +#define _SHELL32_ +#define _SPOOL32_ +#define _USER32_ +#define _USERENV_ +#define _WINMM_ +#define WINIMPM +#define WINSOCK_API_LINKAGE + +/* Windows headers define a couple of annoyingly intrusive macros for the + sole purpose of inline documentation. Since they are defined without + respect for the namespace and not undef'ed anymore, they tend to collide + with otherwise innocent definitions in the application. We check if they + exist and if not, we undef them again after including the Windows headers. */ +#ifndef IN +#define __undef_IN +#endif +#ifndef OUT +#define __undef_OUT +#endif +#ifndef OPTIONAL +#define __undef_OPTIONAL +#endif +#ifndef NOTHING +#define __undef_NOTHING +#endif +#ifndef CRITICAL +#define __undef_CRITICAL +#endif + +#include <windows.h> +#include <wincrypt.h> +#include <lmcons.h> +#include <ntdef.h> + +#ifdef __undef_IN +#undef IN +#endif +#ifdef __undef_OUT +#undef OUT +#endif +#ifdef __undef_OPTIONAL +#undef OPTIONAL +#endif +#ifdef __undef_NOTHING +#undef NOTHING +#endif +#ifdef __undef_CRITICAL +#undef CRITICAL +#endif + +/* So-called "Microsoft Account" SIDs (S-1-11-...) have a netbios domain name + "MicrosoftAccounts". The new "Application Container SIDs" (S-1-15-...) + have a netbios domain name "APPLICATION PACKAGE AUTHORITY" + + The problem is, DNLEN is 15, but these domain names have a length of 16 + resp. 29 chars :-P So we override DNLEN here to be 31, so that calls + to LookupAccountSid/Name don't fail if the buffer is based on DNLEN. + Hope that's enough for a while... */ +#undef DNLEN +#define DNLEN 31 + +/* When Terminal Services are installed, the GetWindowsDirectory function + does not return the system installation dir, but a user specific directory + instead. That's not what we have in mind when calling GetWindowsDirectory + from within Cygwin. So we redefine GetWindowsDirectory to something + invalid here to avoid that it's called accidentally in Cygwin. Don't + use this function. Use GetSystemWindowsDirectoryW. */ +#define GetWindowsDirectoryW dont_use_GetWindowsDirectory +#define GetWindowsDirectoryA dont_use_GetWindowsDirectory + +#endif /*_WINLEAN_H*/ |