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