1 // Licensed under the Apache License, Version 2.0
2 // <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
3 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
4 // All files in the project carrying such notice may not be copied, modified, or distributed
5 // except according to those terms.
6 //! ApiSet Contract for api-ms-win-core-sysinfo-l1.
7 use shared::basetsd::DWORD_PTR;
8 use shared::minwindef::{
9     BOOL, BYTE, DWORD, LPDWORD, LPFILETIME, LPVOID, PBOOL, PDWORD, UINT, USHORT, WORD,
10 };
11 use um::minwinbase::{LPSYSTEMTIME, SYSTEMTIME};
12 use 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 };
17 STRUCT!{struct SYSTEM_INFO_u_s {
18     wProcessorArchitecture: WORD,
19     wReserved: WORD,
20 }}
21 UNION!{union SYSTEM_INFO_u {
22     [u32; 1],
23     dwOemId dwOemId_mut: DWORD,
24     s s_mut: SYSTEM_INFO_u_s,
25 }}
26 STRUCT!{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 }}
38 pub type LPSYSTEM_INFO = *mut SYSTEM_INFO;
39 STRUCT!{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 }}
50 pub type LPMEMORYSTATUSEX = *mut MEMORYSTATUSEX;
51 extern "system" {
GlobalMemoryStatusEx( lpBuffer: LPMEMORYSTATUSEX, ) -> BOOL52     pub fn GlobalMemoryStatusEx(
53         lpBuffer: LPMEMORYSTATUSEX,
54     ) -> BOOL;
GetSystemInfo( lpSystemInfo: LPSYSTEM_INFO, )55     pub fn GetSystemInfo(
56         lpSystemInfo: LPSYSTEM_INFO,
57     );
GetSystemTime( lpSystemTime: LPSYSTEMTIME, )58     pub fn GetSystemTime(
59         lpSystemTime: LPSYSTEMTIME,
60     );
GetSystemTimeAsFileTime( lpSystemTimeAsFileTime: LPFILETIME, )61     pub fn GetSystemTimeAsFileTime(
62         lpSystemTimeAsFileTime: LPFILETIME,
63     );
GetLocalTime( lpSystemTime: LPSYSTEMTIME, )64     pub fn GetLocalTime(
65         lpSystemTime: LPSYSTEMTIME,
66     );
GetVersion() -> DWORD67     pub fn GetVersion() -> DWORD;
SetLocalTime( lpSystemTime: *const SYSTEMTIME, ) -> BOOL68     pub fn SetLocalTime(
69         lpSystemTime: *const SYSTEMTIME,
70     ) -> BOOL;
GetTickCount() -> DWORD71     pub fn GetTickCount() -> DWORD;
GetTickCount64() -> ULONGLONG72     pub fn GetTickCount64() -> ULONGLONG;
GetSystemTimeAdjustment( lpTimeAdjustment: PDWORD, lpTimeIncrement: PDWORD, lpTimeAdjustmentDisabled: PBOOL, ) -> BOOL73     pub fn GetSystemTimeAdjustment(
74         lpTimeAdjustment: PDWORD,
75         lpTimeIncrement: PDWORD,
76         lpTimeAdjustmentDisabled: PBOOL,
77     ) -> BOOL;
GetSystemDirectoryA( lpBuffer: LPSTR, uSize: UINT, ) -> UINT78     pub fn GetSystemDirectoryA(
79         lpBuffer: LPSTR,
80         uSize: UINT,
81     ) -> UINT;
GetSystemDirectoryW( lpBuffer: LPWSTR, uSize: UINT, ) -> UINT82     pub fn GetSystemDirectoryW(
83         lpBuffer: LPWSTR,
84         uSize: UINT,
85     ) -> UINT;
GetWindowsDirectoryA( lpBuffer: LPSTR, uSize: UINT, ) -> UINT86     pub fn GetWindowsDirectoryA(
87         lpBuffer: LPSTR,
88         uSize: UINT,
89     ) -> UINT;
GetWindowsDirectoryW( lpBuffer: LPWSTR, uSize: UINT, ) -> UINT90     pub fn GetWindowsDirectoryW(
91         lpBuffer: LPWSTR,
92         uSize: UINT,
93     ) -> UINT;
GetSystemWindowsDirectoryA( lpBuffer: LPSTR, uSize: UINT, ) -> UINT94     pub fn GetSystemWindowsDirectoryA(
95         lpBuffer: LPSTR,
96         uSize: UINT,
97     ) -> UINT;
GetSystemWindowsDirectoryW( lpBuffer: LPWSTR, uSize: UINT, ) -> UINT98     pub fn GetSystemWindowsDirectoryW(
99         lpBuffer: LPWSTR,
100         uSize: UINT,
101     ) -> UINT;
102 }
103 ENUM!{enum COMPUTER_NAME_FORMAT {
104     ComputerNameNetBIOS,
105     ComputerNameDnsHostname,
106     ComputerNameDnsDomain,
107     ComputerNameDnsFullyQualified,
108     ComputerNamePhysicalNetBIOS,
109     ComputerNamePhysicalDnsHostname,
110     ComputerNamePhysicalDnsDomain,
111     ComputerNamePhysicalDnsFullyQualified,
112     ComputerNameMax,
113 }}
114 extern "system" {
GetComputerNameExA( NameType: COMPUTER_NAME_FORMAT, lpBuffer: LPSTR, nSize: LPDWORD, ) -> BOOL115     pub fn GetComputerNameExA(
116         NameType: COMPUTER_NAME_FORMAT,
117         lpBuffer: LPSTR,
118         nSize: LPDWORD,
119     ) -> BOOL;
GetComputerNameExW( NameType: COMPUTER_NAME_FORMAT, lpBuffer: LPWSTR, nSize: LPDWORD, ) -> BOOL120     pub fn GetComputerNameExW(
121         NameType: COMPUTER_NAME_FORMAT,
122         lpBuffer: LPWSTR,
123         nSize: LPDWORD,
124     ) -> BOOL;
SetComputerNameExW( NameType: COMPUTER_NAME_FORMAT, lpBuffer: LPCWSTR, ) -> BOOL125     pub fn SetComputerNameExW(
126         NameType: COMPUTER_NAME_FORMAT,
127         lpBuffer: LPCWSTR,
128     ) -> BOOL;
SetSystemTime( lpSystemTime: *const SYSTEMTIME, ) -> BOOL129     pub fn SetSystemTime(
130         lpSystemTime: *const SYSTEMTIME,
131     ) -> BOOL;
GetVersionExA( lpVersionInformation: LPOSVERSIONINFOA, ) -> BOOL132     pub fn GetVersionExA(
133         lpVersionInformation: LPOSVERSIONINFOA,
134     ) -> BOOL;
GetVersionExW( lpVersionInformation: LPOSVERSIONINFOW, ) -> BOOL135     pub fn GetVersionExW(
136         lpVersionInformation: LPOSVERSIONINFOW,
137     ) -> BOOL;
GetLogicalProcessorInformation( Buffer: PSYSTEM_LOGICAL_PROCESSOR_INFORMATION, ReturnedLength: PDWORD, ) -> BOOL138     pub fn GetLogicalProcessorInformation(
139         Buffer: PSYSTEM_LOGICAL_PROCESSOR_INFORMATION,
140         ReturnedLength: PDWORD,
141     ) -> BOOL;
GetLogicalProcessorInformationEx( RelationshipType: LOGICAL_PROCESSOR_RELATIONSHIP, Buffer: PSYSTEM_LOGICAL_PROCESSOR_INFORMATION, ReturnedLength: PDWORD, ) -> BOOL142     pub fn GetLogicalProcessorInformationEx(
143         RelationshipType: LOGICAL_PROCESSOR_RELATIONSHIP,
144         Buffer: PSYSTEM_LOGICAL_PROCESSOR_INFORMATION,
145         ReturnedLength: PDWORD,
146     ) -> BOOL;
GetNativeSystemInfo( lpSystemInfo: LPSYSTEM_INFO, )147     pub fn GetNativeSystemInfo(
148         lpSystemInfo: LPSYSTEM_INFO,
149     );
GetSystemTimePreciseAsFileTime( lpSystemTimeAsFileTime: LPFILETIME, )150     pub fn GetSystemTimePreciseAsFileTime(
151         lpSystemTimeAsFileTime: LPFILETIME,
152     );
GetProductInfo( dwOSMajorVersion: DWORD, dwOSMinorVersion: DWORD, dwSpMajorVersion: DWORD, dwSpMinorVersion: DWORD, pdwReturnedProductType: PDWORD, ) -> BOOL153     pub fn GetProductInfo(
154         dwOSMajorVersion: DWORD,
155         dwOSMinorVersion: DWORD,
156         dwSpMajorVersion: DWORD,
157         dwSpMinorVersion: DWORD,
158         pdwReturnedProductType: PDWORD,
159     ) -> BOOL;
VerSetConditionMask( ConditionMask: ULONGLONG, TypeMask: DWORD, Condition: BYTE, ) -> ULONGLONG160     pub fn VerSetConditionMask(
161         ConditionMask: ULONGLONG,
162         TypeMask: DWORD,
163         Condition: BYTE,
164     ) -> ULONGLONG;
165     // pub fn GetOsSafeBootMode();
EnumSystemFirmwareTables( FirmwareTableProviderSignature: DWORD, pFirmwareTableEnumBuffer: PVOID, BufferSize: DWORD, ) -> UINT166     pub fn EnumSystemFirmwareTables(
167         FirmwareTableProviderSignature: DWORD,
168         pFirmwareTableEnumBuffer: PVOID,
169         BufferSize: DWORD,
170     ) -> UINT;
GetSystemFirmwareTable( FirmwareTableProviderSignature: DWORD, FirmwareTableID: DWORD, pFirmwareTableBuffer: PVOID, BufferSize: DWORD, ) -> UINT171     pub fn GetSystemFirmwareTable(
172         FirmwareTableProviderSignature: DWORD,
173         FirmwareTableID: DWORD,
174         pFirmwareTableBuffer: PVOID,
175         BufferSize: DWORD,
176     ) -> UINT;
DnsHostnameToComputerNameExW( Hostname: LPCWSTR, ComputerName: LPWSTR, nSize: LPDWORD, ) -> BOOL177     pub fn DnsHostnameToComputerNameExW(
178         Hostname: LPCWSTR,
179         ComputerName: LPWSTR,
180         nSize: LPDWORD,
181     ) -> BOOL;
GetPhysicallyInstalledSystemMemory( TotalMemoryInKilobytes: PULONGLONG, ) -> BOOL182     pub fn GetPhysicallyInstalledSystemMemory(
183         TotalMemoryInKilobytes: PULONGLONG,
184     ) -> BOOL;
185 }
186 pub const SCEX2_ALT_NETBIOS_NAME: DWORD = 0x00000001;
187 extern "system" {
SetComputerNameEx2W( NameType: COMPUTER_NAME_FORMAT, Flags: DWORD, lpBuffer: LPCWSTR, ) -> BOOL188     pub fn SetComputerNameEx2W(
189         NameType: COMPUTER_NAME_FORMAT,
190         Flags: DWORD,
191         lpBuffer: LPCWSTR,
192     ) -> BOOL;
SetSystemTimeAdjustment( dwTimeAdjustment: DWORD, bTimeAdjustmentDisabled: BOOL, ) -> BOOL193     pub fn SetSystemTimeAdjustment(
194         dwTimeAdjustment: DWORD,
195         bTimeAdjustmentDisabled: BOOL,
196     ) -> BOOL;
InstallELAMCertificateInfo( ELAMFile: HANDLE, ) -> BOOL197     pub fn InstallELAMCertificateInfo(
198         ELAMFile: HANDLE,
199     ) -> BOOL;
GetProcessorSystemCycleTime( Group: USHORT, Buffer: PSYSTEM_PROCESSOR_CYCLE_TIME_INFORMATION, ReturnedLength: PDWORD, ) -> BOOL200     pub fn GetProcessorSystemCycleTime(
201         Group: USHORT,
202         Buffer: PSYSTEM_PROCESSOR_CYCLE_TIME_INFORMATION,
203         ReturnedLength: PDWORD,
204     ) -> BOOL;
205     // pub fn GetOsManufacturingMode();
206     // pub fn GetIntegratedDisplaySize();
SetComputerNameA( lpComputerName: LPCSTR, ) -> BOOL207     pub fn SetComputerNameA(
208         lpComputerName: LPCSTR,
209     ) -> BOOL;
SetComputerNameW( lpComputerName: LPCWSTR, ) -> BOOL210     pub fn SetComputerNameW(
211         lpComputerName: LPCWSTR,
212     ) -> BOOL;
SetComputerNameExA( NameType: COMPUTER_NAME_FORMAT, lpBuffer: LPCSTR, ) -> BOOL213     pub fn SetComputerNameExA(
214         NameType: COMPUTER_NAME_FORMAT,
215         lpBuffer: LPCSTR,
216     ) -> BOOL;
217 }
218