2010-08-30 10:09:30 +08:00
|
|
|
/* 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
|
2012-07-06 21:43:05 +08:00
|
|
|
|
2013-11-24 20:13:36 +08:00
|
|
|
/* 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. */
|
2012-07-06 21:43:05 +08:00
|
|
|
#define _ADVAPI32_
|
2015-08-18 00:29:24 +08:00
|
|
|
#define _AUTHZ_
|
2012-07-06 21:43:05 +08:00
|
|
|
#define _DSGETDCAPI_
|
|
|
|
#define _GDI32_
|
|
|
|
#define _KERNEL32_
|
2013-11-24 20:13:36 +08:00
|
|
|
#define _NORMALIZE_
|
2012-07-06 21:43:05 +08:00
|
|
|
#define _OLE32_
|
|
|
|
#define _SHELL32_
|
|
|
|
#define _SPOOL32_
|
|
|
|
#define _USER32_
|
2014-12-02 18:16:03 +08:00
|
|
|
#define _USERENV_
|
2012-07-06 21:43:05 +08:00
|
|
|
#define _WINMM_
|
|
|
|
#define WINIMPM
|
|
|
|
#define WINSOCK_API_LINKAGE
|
|
|
|
|
2012-07-12 19:27:28 +08:00
|
|
|
/* 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
|
|
|
|
|
2010-08-30 10:09:30 +08:00
|
|
|
#include <windows.h>
|
|
|
|
#include <wincrypt.h>
|
|
|
|
#include <lmcons.h>
|
|
|
|
#include <ntdef.h>
|
2012-07-06 21:43:05 +08:00
|
|
|
|
2012-07-12 19:27:28 +08:00
|
|
|
#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
|
|
|
|
|
2014-09-05 17:46:26 +08:00
|
|
|
/* 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"
|
2020-03-11 20:28:27 +08:00
|
|
|
|
2014-09-05 17:46:26 +08:00
|
|
|
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... */
|
2014-05-06 20:02:48 +08:00
|
|
|
#undef DNLEN
|
2014-09-05 17:46:26 +08:00
|
|
|
#define DNLEN 31
|
2014-05-06 20:02:48 +08:00
|
|
|
|
Drop NT4 support.
* autoload.cc (DnsQuery_A): Fatal if not available.
(DnsRecordListFree): Ditto.
(DsGetDcNameW): Ditto.
(NetGetAnyDCName): Remove.
(NetGetDCName): Remove.
(EnumProcessModules): Fatal if not available.
(GetModuleFileNameExW): Ditto.
(GetModuleInformation): Ditto.
(GetProcessMemoryInfo): Ditto.
(QueryWorkingSet): Ditto.
(LsaRegisterLogonProcess): Ditto.
* fenv.cc (_feinitialise): Drop supports_sse condition.
* fhandler_disk_file.cc (path_conv::isgood_inode): Fix comment.
(fhandler_base::fstat_by_name): Drop has_fileid_dirinfo condition.
(fhandler_disk_file::opendir): Ditto.
* fhandler_netdrive.cc (fhandler_netdrive::readdir): Fix comment.
* fhandler_proc.cc (format_proc_partitions): Drop NT4-only code.
* fhandler_process.cc (get_process_state): Ditto.
* kernel32.cc (GetWindowsDirectoryW): Remove.
(GetWindowsDirectoryA): Remove.
* miscfuncs.cc (nice_to_winprio): Drop NT4-only code.
* mount.cc (fs_info::update): Fix comments.
* net.cc (get_2k_ifs): Drop NT4-only code.
* sec_auth.cc (get_logon_server): Ditto.
(lsaauth): Drop NT4-specific error handling.
* security.cc (alloc_sd): Set SE_DACL_PROTECTED unconditionally.
* select.cc (select_stuff::wait): Always use MWMO_INPUTAVAILABLE.
(peek_windows): Drop NT4-only condition in call to PeekMessage.
* syscalls.cc (gethostid): Remove NT4-only workaround.
* wincap.cc: Througout, drop has_dacl_protect,
has_broken_if_oper_status, has_process_io_counters,
has_terminal_services, has_extended_priority_class, has_guid_volumes,
has_fileid_dirinfo, has_mwmo_inputavailable and supports_sse from
wincaps.
(wincap_nt4sp4): Remove.
(wincap_minimal): Set to wincap_2000.
(wincapc::init): Rely on availability of OSVERSIONINFOEX structure.
Treat error from GetVersionEx as fatal. Treat NT4 as fatal.
* wincap.h (struct wincaps): Drop has_dacl_protect,
has_broken_if_oper_status, has_process_io_counters,
has_terminal_services, has_extended_priority_class, has_guid_volumes,
has_fileid_dirinfo, has_mwmo_inputavailable and supports_sse flags
and methods.
* winlean.h (GetWindowsDirectoryW) Define as GetSystemWindowsDirectoryW.
(GetWindowsDirectoryA): Define as GetSystemWindowsDirectoryA.
2011-04-04 20:23:36 +08:00
|
|
|
/* 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
|
2011-04-19 18:15:09 +08:00
|
|
|
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
|
2020-01-14 10:09:42 +08:00
|
|
|
|
2020-04-07 20:13:50 +08:00
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
extern "C" {
|
|
|
|
#endif
|
|
|
|
|
|
|
|
/* Define extended memory API here as long as not available from mingw-w64. */
|
|
|
|
|
|
|
|
typedef struct _MEM_ADDRESS_REQUIREMENTS
|
|
|
|
{
|
|
|
|
PVOID LowestStartingAddress;
|
|
|
|
PVOID HighestEndingAddress;
|
|
|
|
SIZE_T Alignment;
|
|
|
|
} MEM_ADDRESS_REQUIREMENTS, *PMEM_ADDRESS_REQUIREMENTS;
|
|
|
|
|
|
|
|
typedef enum MEM_EXTENDED_PARAMETER_TYPE
|
|
|
|
{
|
|
|
|
MemExtendedParameterInvalidType = 0,
|
|
|
|
MemExtendedParameterAddressRequirements,
|
|
|
|
MemExtendedParameterNumaNode,
|
|
|
|
MemExtendedParameterPartitionHandle,
|
|
|
|
MemExtendedParameterUserPhysicalHandle,
|
|
|
|
MemExtendedParameterAttributeFlags,
|
|
|
|
MemExtendedParameterMax
|
|
|
|
} MEM_EXTENDED_PARAMETER_TYPE, *PMEM_EXTENDED_PARAMETER_TYPE;
|
|
|
|
|
|
|
|
#define MEM_EXTENDED_PARAMETER_TYPE_BITS 8
|
|
|
|
|
|
|
|
typedef struct DECLSPEC_ALIGN(8) MEM_EXTENDED_PARAMETER
|
|
|
|
{
|
|
|
|
struct
|
|
|
|
{
|
|
|
|
DWORD64 Type : MEM_EXTENDED_PARAMETER_TYPE_BITS;
|
|
|
|
DWORD64 Reserved : 64 - MEM_EXTENDED_PARAMETER_TYPE_BITS;
|
|
|
|
};
|
|
|
|
union
|
|
|
|
{
|
|
|
|
DWORD64 ULong64;
|
|
|
|
PVOID Pointer;
|
|
|
|
SIZE_T Size;
|
|
|
|
HANDLE Handle;
|
|
|
|
DWORD ULong;
|
|
|
|
};
|
|
|
|
} MEM_EXTENDED_PARAMETER, *PMEM_EXTENDED_PARAMETER;
|
|
|
|
|
|
|
|
PVOID VirtualAlloc2 (HANDLE, PVOID, SIZE_T, ULONG, ULONG,
|
|
|
|
PMEM_EXTENDED_PARAMETER, ULONG);
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
2010-08-30 10:09:30 +08:00
|
|
|
#endif /*_WINLEAN_H*/
|