1 /**
2  * This file is part of the mingw-w64 runtime package.
3  * No warranty is given; refer to the file DISCLAIMER within this package.
4  */
5 #ifndef _SYSINFOAPI_H_
6 #define _SYSINFOAPI_H_
7 
8 #include <apiset.h>
9 #include <apisetcconv.h>
10 #include <minwindef.h>
11 #include <minwinbase.h>
12 
13 #ifdef __cplusplus
14 extern "C" {
15 #endif
16 
17 #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_APP)
18   typedef struct _SYSTEM_INFO {
19     __C89_NAMELESS union {
20       DWORD dwOemId;
21       __C89_NAMELESS struct {
22 	WORD wProcessorArchitecture;
23 	WORD wReserved;
24       } DUMMYSTRUCTNAME;
25     } DUMMYUNIONNAME;
26     DWORD dwPageSize;
27     LPVOID lpMinimumApplicationAddress;
28     LPVOID lpMaximumApplicationAddress;
29     DWORD_PTR dwActiveProcessorMask;
30     DWORD dwNumberOfProcessors;
31     DWORD dwProcessorType;
32     DWORD dwAllocationGranularity;
33     WORD wProcessorLevel;
34     WORD wProcessorRevision;
35   } SYSTEM_INFO, *LPSYSTEM_INFO;
36 
37   WINBASEAPI VOID WINAPI GetSystemTime (LPSYSTEMTIME lpSystemTime);
38   WINBASEAPI VOID WINAPI GetSystemTimeAsFileTime (LPFILETIME lpSystemTimeAsFileTime);
39   WINBASEAPI VOID WINAPI GetLocalTime (LPSYSTEMTIME lpSystemTime);
40   WINBASEAPI VOID WINAPI GetNativeSystemInfo (LPSYSTEM_INFO lpSystemInfo);
41 #if _WIN32_WINNT >= 0x0600
42   WINBASEAPI ULONGLONG WINAPI GetTickCount64 (VOID);
43 #endif
44 #endif
45 
46 #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP) || _WIN32_WINNT >= _WIN32_WINNT_WIN10
47 
48   typedef struct _MEMORYSTATUSEX {
49     DWORD dwLength;
50     DWORD dwMemoryLoad;
51     DWORDLONG ullTotalPhys;
52     DWORDLONG ullAvailPhys;
53     DWORDLONG ullTotalPageFile;
54     DWORDLONG ullAvailPageFile;
55     DWORDLONG ullTotalVirtual;
56     DWORDLONG ullAvailVirtual;
57     DWORDLONG ullAvailExtendedVirtual;
58   } MEMORYSTATUSEX,*LPMEMORYSTATUSEX;
59 
60   WINBASEAPI VOID WINAPI GetSystemInfo (LPSYSTEM_INFO lpSystemInfo);
61   WINBASEAPI WINBOOL WINAPI GlobalMemoryStatusEx (LPMEMORYSTATUSEX lpBuffer);
62   WINBASEAPI DWORD WINAPI GetTickCount (VOID);
63   WINBASEAPI VOID WINAPI GetSystemTimePreciseAsFileTime (LPFILETIME lpSystemTimeAsFileTime);
64   WINBASEAPI WINBOOL WINAPI GetVersionExA (LPOSVERSIONINFOA lpVersionInformation);
65   WINBASEAPI WINBOOL WINAPI GetVersionExW (LPOSVERSIONINFOW lpVersionInformation);
66 
67 #endif
68 
69 #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
70   typedef enum _COMPUTER_NAME_FORMAT {
71     ComputerNameNetBIOS,
72     ComputerNameDnsHostname,
73     ComputerNameDnsDomain,
74     ComputerNameDnsFullyQualified,
75     ComputerNamePhysicalNetBIOS,
76     ComputerNamePhysicalDnsHostname,
77     ComputerNamePhysicalDnsDomain,
78     ComputerNamePhysicalDnsFullyQualified,
79     ComputerNameMax
80   } COMPUTER_NAME_FORMAT;
81 
82   WINBASEAPI DWORD WINAPI GetVersion (VOID);
83 
84   WINBASEAPI WINBOOL WINAPI SetLocalTime (CONST SYSTEMTIME *lpSystemTime);
85   WINBASEAPI WINBOOL WINAPI GetSystemTimeAdjustment (PDWORD lpTimeAdjustment, PDWORD lpTimeIncrement, PBOOL lpTimeAdjustmentDisabled);
86   WINBASEAPI UINT WINAPI GetWindowsDirectoryA (LPSTR lpBuffer, UINT uSize);
87   WINBASEAPI UINT WINAPI GetWindowsDirectoryW (LPWSTR lpBuffer, UINT uSize);
88   WINBASEAPI UINT WINAPI GetSystemWindowsDirectoryA (LPSTR lpBuffer, UINT uSize);
89   WINBASEAPI UINT WINAPI GetSystemWindowsDirectoryW (LPWSTR lpBuffer, UINT uSize);
90   WINBASEAPI WINBOOL WINAPI GetComputerNameExA (COMPUTER_NAME_FORMAT NameType, LPSTR lpBuffer, LPDWORD nSize);
91   WINBASEAPI WINBOOL WINAPI GetComputerNameExW (COMPUTER_NAME_FORMAT NameType, LPWSTR lpBuffer, LPDWORD nSize);
92   WINBASEAPI WINBOOL WINAPI SetComputerNameExW (COMPUTER_NAME_FORMAT NameType, LPCWSTR lpBuffer);
93   WINBASEAPI WINBOOL WINAPI SetSystemTime (CONST SYSTEMTIME *lpSystemTime);
94   NTSYSAPI ULONGLONG NTAPI VerSetConditionMask (ULONGLONG ConditionMask, ULONG TypeMask, UCHAR Condition);
95 #if _WIN32_WINNT >= 0x0601
96   WINBASEAPI WINBOOL WINAPI GetOsSafeBootMode (PDWORD Flags);
97 #endif
98 
99 #define GetSystemDirectory __MINGW_NAME_AW(GetSystemDirectory)
100 #define GetWindowsDirectory __MINGW_NAME_AW(GetWindowsDirectory)
101 #define GetSystemWindowsDirectory __MINGW_NAME_AW(GetSystemWindowsDirectory)
102 #define GetComputerNameEx __MINGW_NAME_AW(GetComputerNameEx)
103 #define GetVersionEx __MINGW_NAME_AW(GetVersionEx)
104 
105 #ifdef UNICODE
106 #define SetComputerNameEx SetComputerNameExW
107 #endif
108 #elif defined(WINSTORECOMPAT)
109   WINBASEAPI DWORD WINAPI GetTickCount (VOID);
110 #endif
111 
112 #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_APP)
113   WINBASEAPI UINT WINAPI GetSystemDirectoryA (LPSTR lpBuffer, UINT uSize);
114   WINBASEAPI UINT WINAPI GetSystemDirectoryW (LPWSTR lpBuffer, UINT uSize);
115   WINBASEAPI WINBOOL WINAPI GetLogicalProcessorInformation (PSYSTEM_LOGICAL_PROCESSOR_INFORMATION Buffer, PDWORD ReturnedLength);
116   WINBASEAPI UINT WINAPI EnumSystemFirmwareTables (DWORD FirmwareTableProviderSignature, PVOID pFirmwareTableEnumBuffer, DWORD BufferSize);
117   WINBASEAPI UINT WINAPI GetSystemFirmwareTable (DWORD FirmwareTableProviderSignature, DWORD FirmwareTableID, PVOID pFirmwareTableBuffer, DWORD BufferSize);
118 #if _WIN32_WINNT >= 0x0600
119   WINBASEAPI WINBOOL WINAPI GetProductInfo (DWORD dwOSMajorVersion, DWORD dwOSMinorVersion, DWORD dwSpMajorVersion, DWORD dwSpMinorVersion, PDWORD pdwReturnedProductType);
120 #endif
121 #if _WIN32_WINNT >= 0x0601
122   WINBASEAPI WINBOOL WINAPI GetLogicalProcessorInformationEx (LOGICAL_PROCESSOR_RELATIONSHIP RelationshipType, PSYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX Buffer, PDWORD ReturnedLength);
123 #endif
124 #endif
125 
126 #ifdef __cplusplus
127 }
128 #endif
129 #endif
130