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 use shared::basetsd::DWORD_PTR; 7 use shared::minwindef::{ 8 BOOL, BYTE, DWORD, HKEY, LPBYTE, LPCVOID, LPDWORD, PFILETIME, PHKEY, ULONG 9 }; 10 use um::minwinbase::LPSECURITY_ATTRIBUTES; 11 use um::winnt::{ACCESS_MASK, HANDLE, LONG, LPCSTR, LPCWSTR, LPSTR, LPWSTR, PVOID}; 12 pub type LSTATUS = LONG; 13 pub const RRF_RT_REG_NONE: DWORD = 0x00000001; 14 pub const RRF_RT_REG_SZ: DWORD = 0x00000002; 15 pub const RRF_RT_REG_EXPAND_SZ: DWORD = 0x00000004; 16 pub const RRF_RT_REG_BINARY: DWORD = 0x00000008; 17 pub const RRF_RT_REG_DWORD: DWORD = 0x00000010; 18 pub const RRF_RT_REG_MULTI_SZ: DWORD = 0x00000020; 19 pub const RRF_RT_REG_QWORD: DWORD = 0x00000040; 20 pub const RRF_RT_DWORD: DWORD = RRF_RT_REG_BINARY | RRF_RT_REG_DWORD; 21 pub const RRF_RT_QWORD: DWORD = RRF_RT_REG_BINARY | RRF_RT_REG_QWORD; 22 pub const RRF_RT_ANY: DWORD = 0x0000ffff; 23 pub const RRF_SUBKEY_WOW6464KEY: DWORD = 0x00010000; 24 pub const RRF_SUBKEY_WOW6432KEY: DWORD = 0x00020000; 25 pub const RRF_WOW64_MASK: DWORD = 0x00030000; 26 pub const RRF_NOEXPAND: DWORD = 0x10000000; 27 pub const RRF_ZEROONFAILURE: DWORD = 0x20000000; 28 pub const REG_PROCESS_APPKEY: DWORD = 0x00000001; 29 pub type REGSAM = ACCESS_MASK; 30 pub const HKEY_CLASSES_ROOT: HKEY = 0x80000000i32 as isize as HKEY; 31 pub const HKEY_CURRENT_USER: HKEY = 0x80000001i32 as isize as HKEY; 32 pub const HKEY_LOCAL_MACHINE: HKEY = 0x80000002i32 as isize as HKEY; 33 pub const HKEY_USERS: HKEY = 0x80000003i32 as isize as HKEY; 34 pub const HKEY_PERFORMANCE_DATA: HKEY = 0x80000004i32 as isize as HKEY; 35 pub const HKEY_PERFORMANCE_TEXT: HKEY = 0x80000050i32 as isize as HKEY; 36 pub const HKEY_PERFORMANCE_NLSTEXT: HKEY = 0x80000060i32 as isize as HKEY; 37 pub const HKEY_CURRENT_CONFIG: HKEY = 0x80000005i32 as isize as HKEY; 38 pub const HKEY_DYN_DATA: HKEY = 0x80000006i32 as isize as HKEY; 39 pub const HKEY_CURRENT_USER_LOCAL_SETTINGS: HKEY = 0x80000007i32 as isize as HKEY; 40 // PROVIDER_KEEPS_VALUE_LENGTH 41 // val_context 42 // PVALUEA 43 // PVALUEW 44 // QUERYHANDLER 45 // REG_PROVIDER 46 STRUCT!{struct VALENTA { 47 ve_valuename: LPSTR, 48 ve_valuelen: DWORD, 49 ve_valueptr: DWORD_PTR, 50 ve_type: DWORD, 51 }} 52 pub type PVALENTA = *mut VALENTA; 53 STRUCT!{struct VALENTW { 54 ve_valuename: LPWSTR, 55 ve_valuelen: DWORD, 56 ve_valueptr: DWORD_PTR, 57 ve_type: DWORD, 58 }} 59 pub type PVALENTW = *mut VALENTW; 60 // WIN31_CLASS 61 pub const REG_MUI_STRING_TRUNCATE: DWORD = 0x00000001; 62 pub const REG_SECURE_CONNECTION: DWORD = 1; 63 extern "system" { RegCloseKey( hKey: HKEY, ) -> LSTATUS64 pub fn RegCloseKey( 65 hKey: HKEY, 66 ) -> LSTATUS; RegOverridePredefKey( hKey: HKEY, hNewHKey: HKEY, ) -> LSTATUS67 pub fn RegOverridePredefKey( 68 hKey: HKEY, 69 hNewHKey: HKEY, 70 ) -> LSTATUS; RegOpenUserClassesRoot( hToken: HANDLE, dwOptions: DWORD, samDesired: REGSAM, phkResult: PHKEY, ) -> LSTATUS71 pub fn RegOpenUserClassesRoot( 72 hToken: HANDLE, 73 dwOptions: DWORD, 74 samDesired: REGSAM, 75 phkResult: PHKEY, 76 ) -> LSTATUS; RegOpenCurrentUser( samDesired: REGSAM, phkResult: PHKEY, ) -> LSTATUS77 pub fn RegOpenCurrentUser( 78 samDesired: REGSAM, 79 phkResult: PHKEY, 80 ) -> LSTATUS; RegDisablePredefinedCache() -> LSTATUS81 pub fn RegDisablePredefinedCache() -> LSTATUS; RegDisablePredefinedCacheEx() -> LSTATUS82 pub fn RegDisablePredefinedCacheEx() -> LSTATUS; RegConnectRegistryA( lpMachineName: LPCSTR, hKey: HKEY, phkResult: PHKEY, ) -> LSTATUS83 pub fn RegConnectRegistryA( 84 lpMachineName: LPCSTR, 85 hKey: HKEY, 86 phkResult: PHKEY, 87 ) -> LSTATUS; RegConnectRegistryW( lpMachineName: LPCWSTR, hKey: HKEY, phkResult: PHKEY, ) -> LSTATUS88 pub fn RegConnectRegistryW( 89 lpMachineName: LPCWSTR, 90 hKey: HKEY, 91 phkResult: PHKEY, 92 ) -> LSTATUS; RegConnectRegistryExA( lpMachineName: LPCSTR, hKey: HKEY, flags: ULONG, phkResult: PHKEY, ) -> LSTATUS93 pub fn RegConnectRegistryExA( 94 lpMachineName: LPCSTR, 95 hKey: HKEY, 96 flags: ULONG, 97 phkResult: PHKEY, 98 ) -> LSTATUS; RegConnectRegistryExW( lpMachineName: LPCWSTR, hKey: HKEY, flags: ULONG, phkResult: PHKEY, ) -> LSTATUS99 pub fn RegConnectRegistryExW( 100 lpMachineName: LPCWSTR, 101 hKey: HKEY, 102 flags: ULONG, 103 phkResult: PHKEY, 104 ) -> LSTATUS; RegCreateKeyA( hKey: HKEY, lpSubKey: LPCSTR, phkResult: PHKEY, ) -> LSTATUS105 pub fn RegCreateKeyA( 106 hKey: HKEY, 107 lpSubKey: LPCSTR, 108 phkResult: PHKEY, 109 ) -> LSTATUS; RegCreateKeyW( hKey: HKEY, lpSubKey: LPCWSTR, phkResult: PHKEY, ) -> LSTATUS110 pub fn RegCreateKeyW( 111 hKey: HKEY, 112 lpSubKey: LPCWSTR, 113 phkResult: PHKEY, 114 ) -> LSTATUS; RegCreateKeyExA( hKey: HKEY, lpSubKey: LPCSTR, Reserved: DWORD, lpClass: LPSTR, dwOptions: DWORD, samDesired: REGSAM, lpSecurityAttributes: LPSECURITY_ATTRIBUTES, phkResult: PHKEY, lpdwDisposition: LPDWORD, ) -> LSTATUS115 pub fn RegCreateKeyExA( 116 hKey: HKEY, 117 lpSubKey: LPCSTR, 118 Reserved: DWORD, 119 lpClass: LPSTR, 120 dwOptions: DWORD, 121 samDesired: REGSAM, 122 lpSecurityAttributes: LPSECURITY_ATTRIBUTES, 123 phkResult: PHKEY, 124 lpdwDisposition: LPDWORD, 125 ) -> LSTATUS; RegCreateKeyExW( hKey: HKEY, lpSubKey: LPCWSTR, Reserved: DWORD, lpClass: LPWSTR, dwOptions: DWORD, samDesired: REGSAM, lpSecurityAttributes: LPSECURITY_ATTRIBUTES, phkResult: PHKEY, lpdwDisposition: LPDWORD, ) -> LSTATUS126 pub fn RegCreateKeyExW( 127 hKey: HKEY, 128 lpSubKey: LPCWSTR, 129 Reserved: DWORD, 130 lpClass: LPWSTR, 131 dwOptions: DWORD, 132 samDesired: REGSAM, 133 lpSecurityAttributes: LPSECURITY_ATTRIBUTES, 134 phkResult: PHKEY, 135 lpdwDisposition: LPDWORD, 136 ) -> LSTATUS; RegCreateKeyTransactedA( hKey: HKEY, lpSubKey: LPCSTR, Reserved: DWORD, lpClass: LPSTR, dwOptions: DWORD, samDesired: REGSAM, lpSecurityAttributes: LPSECURITY_ATTRIBUTES, phkResult: PHKEY, lpdwDisposition: LPDWORD, hTransaction: HANDLE, pExtendedParemeter: PVOID, ) -> LSTATUS137 pub fn RegCreateKeyTransactedA( 138 hKey: HKEY, 139 lpSubKey: LPCSTR, 140 Reserved: DWORD, 141 lpClass: LPSTR, 142 dwOptions: DWORD, 143 samDesired: REGSAM, 144 lpSecurityAttributes: LPSECURITY_ATTRIBUTES, 145 phkResult: PHKEY, 146 lpdwDisposition: LPDWORD, 147 hTransaction: HANDLE, 148 pExtendedParemeter: PVOID, 149 ) -> LSTATUS; RegCreateKeyTransactedW( hKey: HKEY, lpSubKey: LPCWSTR, Reserved: DWORD, lpClass: LPWSTR, dwOptions: DWORD, samDesired: REGSAM, lpSecurityAttributes: LPSECURITY_ATTRIBUTES, phkResult: PHKEY, lpdwDisposition: LPDWORD, hTransaction: HANDLE, pExtendedParemeter: PVOID, ) -> LSTATUS150 pub fn RegCreateKeyTransactedW( 151 hKey: HKEY, 152 lpSubKey: LPCWSTR, 153 Reserved: DWORD, 154 lpClass: LPWSTR, 155 dwOptions: DWORD, 156 samDesired: REGSAM, 157 lpSecurityAttributes: LPSECURITY_ATTRIBUTES, 158 phkResult: PHKEY, 159 lpdwDisposition: LPDWORD, 160 hTransaction: HANDLE, 161 pExtendedParemeter: PVOID, 162 ) -> LSTATUS; RegDeleteKeyA( hKey: HKEY, lpSubKey: LPCSTR, ) -> LSTATUS163 pub fn RegDeleteKeyA( 164 hKey: HKEY, 165 lpSubKey: LPCSTR, 166 ) -> LSTATUS; RegDeleteKeyW( hKey: HKEY, lpSubKey: LPCWSTR, ) -> LSTATUS167 pub fn RegDeleteKeyW( 168 hKey: HKEY, 169 lpSubKey: LPCWSTR, 170 ) -> LSTATUS; RegDeleteKeyExA( hKey: HKEY, lpSubKey: LPCSTR, samDesired: REGSAM, Reserved: DWORD, ) -> LSTATUS171 pub fn RegDeleteKeyExA( 172 hKey: HKEY, 173 lpSubKey: LPCSTR, 174 samDesired: REGSAM, 175 Reserved: DWORD, 176 ) -> LSTATUS; RegDeleteKeyExW( hKey: HKEY, lpSubKey: LPCWSTR, samDesired: REGSAM, Reserved: DWORD, ) -> LSTATUS177 pub fn RegDeleteKeyExW( 178 hKey: HKEY, 179 lpSubKey: LPCWSTR, 180 samDesired: REGSAM, 181 Reserved: DWORD, 182 ) -> LSTATUS; RegDeleteKeyTransactedA( hKey: HKEY, lpSubKey: LPCSTR, samDesired: REGSAM, Reserved: DWORD, hTransaction: HANDLE, pExtendedParemeter: PVOID, ) -> LSTATUS183 pub fn RegDeleteKeyTransactedA( 184 hKey: HKEY, 185 lpSubKey: LPCSTR, 186 samDesired: REGSAM, 187 Reserved: DWORD, 188 hTransaction: HANDLE, 189 pExtendedParemeter: PVOID, 190 ) -> LSTATUS; RegDeleteKeyTransactedW( hKey: HKEY, lpSubKey: LPCWSTR, samDesired: REGSAM, Reserved: DWORD, hTransaction: HANDLE, pExtendedParemeter: PVOID, ) -> LSTATUS191 pub fn RegDeleteKeyTransactedW( 192 hKey: HKEY, 193 lpSubKey: LPCWSTR, 194 samDesired: REGSAM, 195 Reserved: DWORD, 196 hTransaction: HANDLE, 197 pExtendedParemeter: PVOID, 198 ) -> LSTATUS; RegDisableReflectionKey( hBase: HKEY, ) -> LONG199 pub fn RegDisableReflectionKey( 200 hBase: HKEY, 201 ) -> LONG; RegEnableReflectionKey( hBase: HKEY, ) -> LONG202 pub fn RegEnableReflectionKey( 203 hBase: HKEY, 204 ) -> LONG; RegQueryReflectionKey( hBase: HKEY, bIsReflectionDisabled: *mut BOOL, ) -> LONG205 pub fn RegQueryReflectionKey( 206 hBase: HKEY, 207 bIsReflectionDisabled: *mut BOOL, 208 ) -> LONG; RegDeleteValueA( hKey: HKEY, lpValueName: LPCSTR, ) -> LSTATUS209 pub fn RegDeleteValueA( 210 hKey: HKEY, 211 lpValueName: LPCSTR, 212 ) -> LSTATUS; RegDeleteValueW( hKey: HKEY, lpValueName: LPCWSTR, ) -> LSTATUS213 pub fn RegDeleteValueW( 214 hKey: HKEY, 215 lpValueName: LPCWSTR, 216 ) -> LSTATUS; 217 // pub fn RegEnumKeyA(); 218 // pub fn RegEnumKeyW(); RegEnumKeyExA( hKey: HKEY, dwIndex: DWORD, lpName: LPSTR, lpcName: LPDWORD, lpReserved: LPDWORD, lpClass: LPSTR, lpcClass: LPDWORD, lpftLastWriteTime: PFILETIME, ) -> LSTATUS219 pub fn RegEnumKeyExA( 220 hKey: HKEY, 221 dwIndex: DWORD, 222 lpName: LPSTR, 223 lpcName: LPDWORD, 224 lpReserved: LPDWORD, 225 lpClass: LPSTR, 226 lpcClass: LPDWORD, 227 lpftLastWriteTime: PFILETIME, 228 ) -> LSTATUS; RegEnumKeyExW( hKey: HKEY, dwIndex: DWORD, lpName: LPWSTR, lpcName: LPDWORD, lpReserved: LPDWORD, lpClass: LPWSTR, lpcClass: LPDWORD, lpftLastWriteTime: PFILETIME, ) -> LSTATUS229 pub fn RegEnumKeyExW( 230 hKey: HKEY, 231 dwIndex: DWORD, 232 lpName: LPWSTR, 233 lpcName: LPDWORD, 234 lpReserved: LPDWORD, 235 lpClass: LPWSTR, 236 lpcClass: LPDWORD, 237 lpftLastWriteTime: PFILETIME, 238 ) -> LSTATUS; RegEnumValueA( hKey: HKEY, dwIndex: DWORD, lpValueName: LPSTR, lpcchValueName: LPDWORD, lpReserved: LPDWORD, lpType: LPDWORD, lpData: LPBYTE, lpcbData: LPDWORD, ) -> LSTATUS239 pub fn RegEnumValueA( 240 hKey: HKEY, 241 dwIndex: DWORD, 242 lpValueName: LPSTR, 243 lpcchValueName: LPDWORD, 244 lpReserved: LPDWORD, 245 lpType: LPDWORD, 246 lpData: LPBYTE, 247 lpcbData: LPDWORD, 248 ) -> LSTATUS; RegEnumValueW( hKey: HKEY, dwIndex: DWORD, lpValueName: LPWSTR, lpcchValueName: LPDWORD, lpReserved: LPDWORD, lpType: LPDWORD, lpData: LPBYTE, lpcbData: LPDWORD, ) -> LSTATUS249 pub fn RegEnumValueW( 250 hKey: HKEY, 251 dwIndex: DWORD, 252 lpValueName: LPWSTR, 253 lpcchValueName: LPDWORD, 254 lpReserved: LPDWORD, 255 lpType: LPDWORD, 256 lpData: LPBYTE, 257 lpcbData: LPDWORD, 258 ) -> LSTATUS; RegFlushKey( hKey: HKEY, ) -> LSTATUS259 pub fn RegFlushKey( 260 hKey: HKEY, 261 ) -> LSTATUS; 262 // pub fn RegGetKeySecurity(); 263 // pub fn RegLoadKeyA(); 264 // pub fn RegLoadKeyW(); RegNotifyChangeKeyValue( hKey: HKEY, bWatchSubtree: BOOL, dwNotifyFilter: DWORD, hEvent: HANDLE, fAsynchronous: BOOL, ) -> LSTATUS265 pub fn RegNotifyChangeKeyValue( 266 hKey: HKEY, 267 bWatchSubtree: BOOL, 268 dwNotifyFilter: DWORD, 269 hEvent: HANDLE, 270 fAsynchronous: BOOL, 271 ) -> LSTATUS; 272 // pub fn RegOpenKeyA(); 273 // pub fn RegOpenKeyW(); RegOpenKeyExA( hKey: HKEY, lpSubKey: LPCSTR, ulOptions: DWORD, samDesired: REGSAM, phkResult: PHKEY, ) -> LSTATUS274 pub fn RegOpenKeyExA( 275 hKey: HKEY, 276 lpSubKey: LPCSTR, 277 ulOptions: DWORD, 278 samDesired: REGSAM, 279 phkResult: PHKEY, 280 ) -> LSTATUS; RegOpenKeyExW( hKey: HKEY, lpSubKey: LPCWSTR, ulOptions: DWORD, samDesired: REGSAM, phkResult: PHKEY, ) -> LSTATUS281 pub fn RegOpenKeyExW( 282 hKey: HKEY, 283 lpSubKey: LPCWSTR, 284 ulOptions: DWORD, 285 samDesired: REGSAM, 286 phkResult: PHKEY, 287 ) -> LSTATUS; RegOpenKeyTransactedA( hKey: HKEY, lpSubKey: LPCSTR, ulOptions: DWORD, samDesired: REGSAM, phkResult: PHKEY, hTransaction: HANDLE, pExtendedParemeter: PVOID, ) -> LSTATUS288 pub fn RegOpenKeyTransactedA( 289 hKey: HKEY, 290 lpSubKey: LPCSTR, 291 ulOptions: DWORD, 292 samDesired: REGSAM, 293 phkResult: PHKEY, 294 hTransaction: HANDLE, 295 pExtendedParemeter: PVOID, 296 ) -> LSTATUS; RegOpenKeyTransactedW( hKey: HKEY, lpSubKey: LPCWSTR, ulOptions: DWORD, samDesired: REGSAM, phkResult: PHKEY, hTransaction: HANDLE, pExtendedParemeter: PVOID, ) -> LSTATUS297 pub fn RegOpenKeyTransactedW( 298 hKey: HKEY, 299 lpSubKey: LPCWSTR, 300 ulOptions: DWORD, 301 samDesired: REGSAM, 302 phkResult: PHKEY, 303 hTransaction: HANDLE, 304 pExtendedParemeter: PVOID, 305 ) -> LSTATUS; RegQueryInfoKeyA( hKey: HKEY, lpClass: LPSTR, lpcClass: LPDWORD, lpReserved: LPDWORD, lpcSubKeys: LPDWORD, lpcMaxSubKeyLen: LPDWORD, lpcMaxClassLen: LPDWORD, lpcValues: LPDWORD, lpcMaxValueNameLen: LPDWORD, lpcMaxValueLen: LPDWORD, lpcbSecurityDescriptor: LPDWORD, lpftLastWriteTime: PFILETIME, ) -> LSTATUS306 pub fn RegQueryInfoKeyA( 307 hKey: HKEY, 308 lpClass: LPSTR, 309 lpcClass: LPDWORD, 310 lpReserved: LPDWORD, 311 lpcSubKeys: LPDWORD, 312 lpcMaxSubKeyLen: LPDWORD, 313 lpcMaxClassLen: LPDWORD, 314 lpcValues: LPDWORD, 315 lpcMaxValueNameLen: LPDWORD, 316 lpcMaxValueLen: LPDWORD, 317 lpcbSecurityDescriptor: LPDWORD, 318 lpftLastWriteTime: PFILETIME, 319 ) -> LSTATUS; RegQueryInfoKeyW( hKey: HKEY, lpClass: LPWSTR, lpcClass: LPDWORD, lpReserved: LPDWORD, lpcSubKeys: LPDWORD, lpcMaxSubKeyLen: LPDWORD, lpcMaxClassLen: LPDWORD, lpcValues: LPDWORD, lpcMaxValueNameLen: LPDWORD, lpcMaxValueLen: LPDWORD, lpcbSecurityDescriptor: LPDWORD, lpftLastWriteTime: PFILETIME, ) -> LSTATUS320 pub fn RegQueryInfoKeyW( 321 hKey: HKEY, 322 lpClass: LPWSTR, 323 lpcClass: LPDWORD, 324 lpReserved: LPDWORD, 325 lpcSubKeys: LPDWORD, 326 lpcMaxSubKeyLen: LPDWORD, 327 lpcMaxClassLen: LPDWORD, 328 lpcValues: LPDWORD, 329 lpcMaxValueNameLen: LPDWORD, 330 lpcMaxValueLen: LPDWORD, 331 lpcbSecurityDescriptor: LPDWORD, 332 lpftLastWriteTime: PFILETIME, 333 ) -> LSTATUS; 334 // pub fn RegQueryValueA(); 335 // pub fn RegQueryValueW(); RegQueryMultipleValuesA( hKey: HKEY, val_list: PVALENTA, num_vals: DWORD, lpValueBuf: LPSTR, ldwTotsize: LPDWORD, ) -> LSTATUS336 pub fn RegQueryMultipleValuesA( 337 hKey: HKEY, 338 val_list: PVALENTA, 339 num_vals: DWORD, 340 lpValueBuf: LPSTR, 341 ldwTotsize: LPDWORD, 342 ) -> LSTATUS; RegQueryMultipleValuesW( hKey: HKEY, val_list: PVALENTW, num_vals: DWORD, lpValueBuf: LPWSTR, ldwTotsize: LPDWORD, ) -> LSTATUS343 pub fn RegQueryMultipleValuesW( 344 hKey: HKEY, 345 val_list: PVALENTW, 346 num_vals: DWORD, 347 lpValueBuf: LPWSTR, 348 ldwTotsize: LPDWORD, 349 ) -> LSTATUS; RegQueryValueExA( hKey: HKEY, lpValueName: LPCSTR, lpReserved: LPDWORD, lpType: LPDWORD, lpData: LPBYTE, lpcbData: LPDWORD, ) -> LSTATUS350 pub fn RegQueryValueExA( 351 hKey: HKEY, 352 lpValueName: LPCSTR, 353 lpReserved: LPDWORD, 354 lpType: LPDWORD, 355 lpData: LPBYTE, 356 lpcbData: LPDWORD, 357 ) -> LSTATUS; RegQueryValueExW( hKey: HKEY, lpValueName: LPCWSTR, lpReserved: LPDWORD, lpType: LPDWORD, lpData: LPBYTE, lpcbData: LPDWORD, ) -> LSTATUS358 pub fn RegQueryValueExW( 359 hKey: HKEY, 360 lpValueName: LPCWSTR, 361 lpReserved: LPDWORD, 362 lpType: LPDWORD, 363 lpData: LPBYTE, 364 lpcbData: LPDWORD, 365 ) -> LSTATUS; 366 // pub fn RegReplaceKeyA(); 367 // pub fn RegReplaceKeyW(); 368 // pub fn RegRestoreKeyA(); 369 // pub fn RegRestoreKeyW(); 370 // pub fn RegRenameKey(); 371 // pub fn RegSaveKeyA(); 372 // pub fn RegSaveKeyW(); 373 // pub fn RegSetKeySecurity(); 374 // pub fn RegSetValueA(); 375 // pub fn RegSetValueW(); RegSetValueExA( hKey: HKEY, lpValueName: LPCSTR, Reserved: DWORD, dwType: DWORD, lpData: *const BYTE, cbData: DWORD, ) -> LSTATUS376 pub fn RegSetValueExA( 377 hKey: HKEY, 378 lpValueName: LPCSTR, 379 Reserved: DWORD, 380 dwType: DWORD, 381 lpData: *const BYTE, 382 cbData: DWORD, 383 ) -> LSTATUS; RegSetValueExW( hKey: HKEY, lpValueName: LPCWSTR, Reserved: DWORD, dwType: DWORD, lpData: *const BYTE, cbData: DWORD, ) -> LSTATUS384 pub fn RegSetValueExW( 385 hKey: HKEY, 386 lpValueName: LPCWSTR, 387 Reserved: DWORD, 388 dwType: DWORD, 389 lpData: *const BYTE, 390 cbData: DWORD, 391 ) -> LSTATUS; 392 // pub fn RegUnLoadKeyA(); 393 // pub fn RegUnLoadKeyW(); RegDeleteKeyValueA( hKey: HKEY, lpSubKey: LPCSTR, lpValueName: LPCSTR, ) -> LSTATUS394 pub fn RegDeleteKeyValueA( 395 hKey: HKEY, 396 lpSubKey: LPCSTR, 397 lpValueName: LPCSTR, 398 ) -> LSTATUS; RegDeleteKeyValueW( hKey: HKEY, lpSubKey: LPCWSTR, lpValueName: LPCWSTR, ) -> LSTATUS399 pub fn RegDeleteKeyValueW( 400 hKey: HKEY, 401 lpSubKey: LPCWSTR, 402 lpValueName: LPCWSTR, 403 ) -> LSTATUS; RegSetKeyValueA( hKey: HKEY, lpSubKey: LPCSTR, lpValueName: LPCSTR, dwType: DWORD, lpData: LPCVOID, cbData: DWORD, ) -> LSTATUS404 pub fn RegSetKeyValueA( 405 hKey: HKEY, 406 lpSubKey: LPCSTR, 407 lpValueName: LPCSTR, 408 dwType: DWORD, 409 lpData: LPCVOID, 410 cbData: DWORD, 411 ) -> LSTATUS; RegSetKeyValueW( hKey: HKEY, lpSubKey: LPCWSTR, lpValueName: LPCWSTR, dwType: DWORD, lpData: LPCVOID, cbData: DWORD, ) -> LSTATUS412 pub fn RegSetKeyValueW( 413 hKey: HKEY, 414 lpSubKey: LPCWSTR, 415 lpValueName: LPCWSTR, 416 dwType: DWORD, 417 lpData: LPCVOID, 418 cbData: DWORD, 419 ) -> LSTATUS; RegDeleteTreeA( hKey: HKEY, lpSubKey: LPCSTR, ) -> LSTATUS420 pub fn RegDeleteTreeA( 421 hKey: HKEY, 422 lpSubKey: LPCSTR, 423 ) -> LSTATUS; RegDeleteTreeW( hKey: HKEY, lpSubKey: LPCWSTR, ) -> LSTATUS424 pub fn RegDeleteTreeW( 425 hKey: HKEY, 426 lpSubKey: LPCWSTR, 427 ) -> LSTATUS; RegCopyTreeA( hKeySrc: HKEY, lpSubKey: LPCSTR, hKeyDest: HKEY, ) -> LSTATUS428 pub fn RegCopyTreeA( 429 hKeySrc: HKEY, 430 lpSubKey: LPCSTR, 431 hKeyDest: HKEY, 432 ) -> LSTATUS; RegGetValueA( hkey: HKEY, lpSubKey: LPCSTR, lpValue: LPCSTR, dwFlags: DWORD, pdwType: LPDWORD, pvData: PVOID, pcbData: LPDWORD, ) -> LSTATUS433 pub fn RegGetValueA( 434 hkey: HKEY, 435 lpSubKey: LPCSTR, 436 lpValue: LPCSTR, 437 dwFlags: DWORD, 438 pdwType: LPDWORD, 439 pvData: PVOID, 440 pcbData: LPDWORD, 441 ) -> LSTATUS; RegGetValueW( hkey: HKEY, lpSubKey: LPCWSTR, lpValue: LPCWSTR, dwFlags: DWORD, pdwType: LPDWORD, pvData: PVOID, pcbData: LPDWORD, ) -> LSTATUS442 pub fn RegGetValueW( 443 hkey: HKEY, 444 lpSubKey: LPCWSTR, 445 lpValue: LPCWSTR, 446 dwFlags: DWORD, 447 pdwType: LPDWORD, 448 pvData: PVOID, 449 pcbData: LPDWORD, 450 ) -> LSTATUS; RegCopyTreeW( hKeySrc: HKEY, lpSubKey: LPCWSTR, hKeyDest: HKEY, ) -> LSTATUS451 pub fn RegCopyTreeW( 452 hKeySrc: HKEY, 453 lpSubKey: LPCWSTR, 454 hKeyDest: HKEY, 455 ) -> LSTATUS; 456 // pub fn RegLoadMUIStringA(); RegLoadMUIStringW( hKey: HKEY, pszValue: LPCWSTR, pszOutBuf: LPWSTR, cbOutBuf: DWORD, pcbData: LPDWORD, Flags: DWORD, pszDirectory: LPCWSTR, ) -> LSTATUS457 pub fn RegLoadMUIStringW( 458 hKey: HKEY, 459 pszValue: LPCWSTR, 460 pszOutBuf: LPWSTR, 461 cbOutBuf: DWORD, 462 pcbData: LPDWORD, 463 Flags: DWORD, 464 pszDirectory: LPCWSTR, 465 ) -> LSTATUS; 466 // pub fn RegLoadAppKeyA(); 467 // pub fn RegLoadAppKeyW(); 468 // pub fn InitiateSystemShutdownA(); 469 // pub fn InitiateSystemShutdownW(); AbortSystemShutdownA( lpMachineName: LPSTR, ) -> BOOL470 pub fn AbortSystemShutdownA( 471 lpMachineName: LPSTR, 472 ) -> BOOL; AbortSystemShutdownW( lpMachineName: LPWSTR, ) -> BOOL473 pub fn AbortSystemShutdownW( 474 lpMachineName: LPWSTR, 475 ) -> BOOL; 476 } 477 // REASON_* 478 // MAX_SHUTDOWN_TIMEOUT 479 extern "system" { 480 // pub fn InitiateSystemShutdownExA(); 481 // pub fn InitiateSystemShutdownExW(); 482 } 483 // SHUTDOWN_* 484 extern "system" { 485 // pub fn InitiateShutdownA(); 486 // pub fn InitiateShutdownW(); 487 // pub fn CheckForHiberboot(); 488 // pub fn RegSaveKeyExA(); 489 // pub fn RegSaveKeyExW(); 490 } 491