1use shared::basetsd::DWORD_PTR;
8use shared::minwindef::{
9 BOOL, BYTE, DWORD, LPDWORD, LPFILETIME, LPVOID, PBOOL, PDWORD, UINT, USHORT, WORD,
10};
11use um::minwinbase::{LPSYSTEMTIME, SYSTEMTIME};
12use um::winnt::{
13 DWORDLONG, HANDLE, LOGICAL_PROCESSOR_RELATIONSHIP, LPCSTR, LPCWSTR, LPOSVERSIONINFOA,
14 LPOSVERSIONINFOW, LPSTR, LPWSTR, PSYSTEM_LOGICAL_PROCESSOR_INFORMATION,
15 PSYSTEM_PROCESSOR_CYCLE_TIME_INFORMATION, PULONGLONG, PVOID, ULONGLONG,
16};
17STRUCT!{struct SYSTEM_INFO_u_s {
18 wProcessorArchitecture: WORD,
19 wReserved: WORD,
20}}
21UNION!{union SYSTEM_INFO_u {
22 [u32; 1],
23 dwOemId dwOemId_mut: DWORD,
24 s s_mut: SYSTEM_INFO_u_s,
25}}
26STRUCT!{struct SYSTEM_INFO {
27 u: SYSTEM_INFO_u,
28 dwPageSize: DWORD,
29 lpMinimumApplicationAddress: LPVOID,
30 lpMaximumApplicationAddress: LPVOID,
31 dwActiveProcessorMask: DWORD_PTR,
32 dwNumberOfProcessors: DWORD,
33 dwProcessorType: DWORD,
34 dwAllocationGranularity: DWORD,
35 wProcessorLevel: WORD,
36 wProcessorRevision: WORD,
37}}
38pub type LPSYSTEM_INFO = *mut SYSTEM_INFO;
39STRUCT!{struct MEMORYSTATUSEX {
40 dwLength: DWORD,
41 dwMemoryLoad: DWORD,
42 ullTotalPhys: DWORDLONG,
43 ullAvailPhys: DWORDLONG,
44 ullTotalPageFile: DWORDLONG,
45 ullAvailPageFile: DWORDLONG,
46 ullTotalVirtual: DWORDLONG,
47 ullAvailVirtual: DWORDLONG,
48 ullAvailExtendedVirtual: DWORDLONG,
49}}
50pub type LPMEMORYSTATUSEX = *mut MEMORYSTATUSEX;
51extern "system" {
52 pub fn GlobalMemoryStatusEx(
53 lpBuffer: LPMEMORYSTATUSEX,
54 ) -> BOOL;
55 pub fn GetSystemInfo(
56 lpSystemInfo: LPSYSTEM_INFO,
57 );
58 pub fn GetSystemTime(
59 lpSystemTime: LPSYSTEMTIME,
60 );
61 pub fn GetSystemTimeAsFileTime(
62 lpSystemTimeAsFileTime: LPFILETIME,
63 );
64 pub fn GetLocalTime(
65 lpSystemTime: LPSYSTEMTIME,
66 );
67 pub fn GetVersion() -> DWORD;
68 pub fn SetLocalTime(
69 lpSystemTime: *const SYSTEMTIME,
70 ) -> BOOL;
71 pub fn GetTickCount() -> DWORD;
72 pub fn GetTickCount64() -> ULONGLONG;
73 pub fn GetSystemTimeAdjustment(
74 lpTimeAdjustment: PDWORD,
75 lpTimeIncrement: PDWORD,
76 lpTimeAdjustmentDisabled: PBOOL,
77 ) -> BOOL;
78 pub fn GetSystemDirectoryA(
79 lpBuffer: LPSTR,
80 uSize: UINT,
81 ) -> UINT;
82 pub fn GetSystemDirectoryW(
83 lpBuffer: LPWSTR,
84 uSize: UINT,
85 ) -> UINT;
86 pub fn GetWindowsDirectoryA(
87 lpBuffer: LPSTR,
88 uSize: UINT,
89 ) -> UINT;
90 pub fn GetWindowsDirectoryW(
91 lpBuffer: LPWSTR,
92 uSize: UINT,
93 ) -> UINT;
94 pub fn GetSystemWindowsDirectoryA(
95 lpBuffer: LPSTR,
96 uSize: UINT,
97 ) -> UINT;
98 pub fn GetSystemWindowsDirectoryW(
99 lpBuffer: LPWSTR,
100 uSize: UINT,
101 ) -> UINT;
102}
103ENUM!{enum COMPUTER_NAME_FORMAT {
104 ComputerNameNetBIOS,
105 ComputerNameDnsHostname,
106 ComputerNameDnsDomain,
107 ComputerNameDnsFullyQualified,
108 ComputerNamePhysicalNetBIOS,
109 ComputerNamePhysicalDnsHostname,
110 ComputerNamePhysicalDnsDomain,
111 ComputerNamePhysicalDnsFullyQualified,
112 ComputerNameMax,
113}}
114extern "system" {
115 pub fn GetComputerNameExA(
116 NameType: COMPUTER_NAME_FORMAT,
117 lpBuffer: LPSTR,
118 nSize: LPDWORD,
119 ) -> BOOL;
120 pub fn GetComputerNameExW(
121 NameType: COMPUTER_NAME_FORMAT,
122 lpBuffer: LPWSTR,
123 nSize: LPDWORD,
124 ) -> BOOL;
125 pub fn SetComputerNameExW(
126 NameType: COMPUTER_NAME_FORMAT,
127 lpBuffer: LPCWSTR,
128 ) -> BOOL;
129 pub fn SetSystemTime(
130 lpSystemTime: *const SYSTEMTIME,
131 ) -> BOOL;
132 pub fn GetVersionExA(
133 lpVersionInformation: LPOSVERSIONINFOA,
134 ) -> BOOL;
135 pub fn GetVersionExW(
136 lpVersionInformation: LPOSVERSIONINFOW,
137 ) -> BOOL;
138 pub fn GetLogicalProcessorInformation(
139 Buffer: PSYSTEM_LOGICAL_PROCESSOR_INFORMATION,
140 ReturnedLength: PDWORD,
141 ) -> BOOL;
142 pub fn GetLogicalProcessorInformationEx(
143 RelationshipType: LOGICAL_PROCESSOR_RELATIONSHIP,
144 Buffer: PSYSTEM_LOGICAL_PROCESSOR_INFORMATION,
145 ReturnedLength: PDWORD,
146 ) -> BOOL;
147 pub fn GetNativeSystemInfo(
148 lpSystemInfo: LPSYSTEM_INFO,
149 );
150 pub fn GetSystemTimePreciseAsFileTime(
151 lpSystemTimeAsFileTime: LPFILETIME,
152 );
153 pub fn GetProductInfo(
154 dwOSMajorVersion: DWORD,
155 dwOSMinorVersion: DWORD,
156 dwSpMajorVersion: DWORD,
157 dwSpMinorVersion: DWORD,
158 pdwReturnedProductType: PDWORD,
159 ) -> BOOL;
160 pub fn VerSetConditionMask(
161 ConditionMask: ULONGLONG,
162 TypeMask: DWORD,
163 Condition: BYTE,
164 ) -> ULONGLONG;
165 pub fn EnumSystemFirmwareTables(
167 FirmwareTableProviderSignature: DWORD,
168 pFirmwareTableEnumBuffer: PVOID,
169 BufferSize: DWORD,
170 ) -> UINT;
171 pub fn GetSystemFirmwareTable(
172 FirmwareTableProviderSignature: DWORD,
173 FirmwareTableID: DWORD,
174 pFirmwareTableBuffer: PVOID,
175 BufferSize: DWORD,
176 ) -> UINT;
177 pub fn DnsHostnameToComputerNameExW(
178 Hostname: LPCWSTR,
179 ComputerName: LPWSTR,
180 nSize: LPDWORD,
181 ) -> BOOL;
182 pub fn GetPhysicallyInstalledSystemMemory(
183 TotalMemoryInKilobytes: PULONGLONG,
184 ) -> BOOL;
185}
186pub const SCEX2_ALT_NETBIOS_NAME: DWORD = 0x00000001;
187extern "system" {
188 pub fn SetComputerNameEx2W(
189 NameType: COMPUTER_NAME_FORMAT,
190 Flags: DWORD,
191 lpBuffer: LPCWSTR,
192 ) -> BOOL;
193 pub fn SetSystemTimeAdjustment(
194 dwTimeAdjustment: DWORD,
195 bTimeAdjustmentDisabled: BOOL,
196 ) -> BOOL;
197 pub fn InstallELAMCertificateInfo(
198 ELAMFile: HANDLE,
199 ) -> BOOL;
200 pub fn GetProcessorSystemCycleTime(
201 Group: USHORT,
202 Buffer: PSYSTEM_PROCESSOR_CYCLE_TIME_INFORMATION,
203 ReturnedLength: PDWORD,
204 ) -> BOOL;
205 pub fn SetComputerNameA(
208 lpComputerName: LPCSTR,
209 ) -> BOOL;
210 pub fn SetComputerNameW(
211 lpComputerName: LPCWSTR,
212 ) -> BOOL;
213 pub fn SetComputerNameExA(
214 NameType: COMPUTER_NAME_FORMAT,
215 lpBuffer: LPCSTR,
216 ) -> BOOL;
217}