10#define HKEY_CLASSES_ROOT ((HKEY)(LONG_PTR)(LONG)0x80000000)
11#define HKEY_CURRENT_USER ((HKEY)(LONG_PTR)(LONG)0x80000001)
12#define HKEY_LOCAL_MACHINE ((HKEY)(LONG_PTR)(LONG)0x80000002)
13#define HKEY_USERS ((HKEY)(LONG_PTR)(LONG)0x80000003)
14#define HKEY_PERFORMANCE_DATA ((HKEY)(LONG_PTR)(LONG)0x80000004)
15#define HKEY_CURRENT_CONFIG ((HKEY)(LONG_PTR)(LONG)0x80000005)
16#define HKEY_DYN_DATA ((HKEY)(LONG_PTR)(LONG)0x80000006)
17#define HKEY_PERFORMANCE_TEXT ((HKEY)(LONG_PTR)(LONG)0x80000050)
18#define HKEY_PERFORMANCE_NLSTEXT ((HKEY)(LONG_PTR)(LONG)0x80000060)
20#define REG_OPTION_VOLATILE 1
21#define REG_OPTION_NON_VOLATILE 0
22#define REG_CREATED_NEW_KEY 1
23#define REG_OPENED_EXISTING_KEY 2
26#define REG_EXPAND_SZ 2
28#define REG_DWORD_LITTLE_ENDIAN 4
30#define REG_DWORD_BIG_ENDIAN 5
33#define REG_RESOURCE_LIST 8
34#define REG_FULL_RESOURCE_DESCRIPTOR 9
35#define REG_RESOURCE_REQUIREMENTS_LIST 10
36#define REG_QWORD_LITTLE_ENDIAN 11
38#define REG_NOTIFY_CHANGE_NAME 1
39#define REG_NOTIFY_CHANGE_ATTRIBUTES 2
40#define REG_NOTIFY_CHANGE_LAST_SET 4
41#define REG_NOTIFY_CHANGE_SECURITY 8
44#define SHUTDOWN_FORCE_OTHERS 0x00000001
45#define SHUTDOWN_FORCE_SELF 0x00000002
46#define SHUTDOWN_GRACE_OVERRIDE 0x00000020
47#define SHUTDOWN_INSTALL_UPDATES 0x00000040
48#define SHUTDOWN_NOREBOOT 0x00000010
49#define SHUTDOWN_POWEROFF 0x00000008
50#define SHUTDOWN_RESTART 0x00000004
51#define SHUTDOWN_RESTARTAPPS 0x00000080
53#define MAX_SHUTDOWN_TIMEOUT (10*365*24*60*60)
55#define RRF_RT_REG_NONE (1 << 0)
56#define RRF_RT_REG_SZ (1 << 1)
57#define RRF_RT_REG_EXPAND_SZ (1 << 2)
58#define RRF_RT_REG_BINARY (1 << 3)
59#define RRF_RT_REG_DWORD (1 << 4)
60#define RRF_RT_REG_MULTI_SZ (1 << 5)
61#define RRF_RT_REG_QWORD (1 << 6)
62#define RRF_RT_DWORD (RRF_RT_REG_BINARY | RRF_RT_REG_DWORD)
63#define RRF_RT_QWORD (RRF_RT_REG_BINARY | RRF_RT_REG_QWORD)
64#define RRF_RT_ANY (0x0000FFFF)
65#define RRF_NOEXPAND (1 << 28)
66#define RRF_ZEROONFAILURE (1 << 29)
87#if (_WIN32_WINNT >= 0x0600)
100#if (_WIN32_WINNT >= 0x0600)
114#if (_WIN32_WINNT >= 0x0600)
124#if (_WIN32_WINNT >= 0x0500)
130#if (_WIN32_WINNT >= 0x0600)
200#if (_WIN32_WINNT >= 0x0600)
247#if (_WIN32_WINNT >= 0x0600)
330#if (_WIN32_WINNT >= 0x0600)
380#if (_WIN32_WINNT >= 0x0600)
447#define AbortSystemShutdown AbortSystemShutdownW
448#define InitiateSystemShutdown InitiateSystemShutdownW
449#define InitiateSystemShutdownEx InitiateSystemShutdownExW
450#define RegConnectRegistry RegConnectRegistryW
451#if (_WIN32_WINNT >= 0x0600)
452#define InitiateShutdown InitiateShutdownW
453#define RegCopyTree RegCopyTreeW
455#define RegCreateKey RegCreateKeyW
456#define RegCreateKeyEx RegCreateKeyExW
457#define RegDeleteKey RegDeleteKeyW
458#define RegDeleteKeyEx RegDeleteKeyExW
459#if (_WIN32_WINNT >= 0x0600)
460#define RegDeleteKeyValue RegDeleteKeyValueW
461#define RegDeleteTree RegDeleteTreeW
463#define RegDeleteValue RegDeleteValueW
464#define RegEnumKey RegEnumKeyW
465#define RegEnumKeyEx RegEnumKeyExW
466#define RegEnumValue RegEnumValueW
467#if (_WIN32_WINNT >= 0x0600)
468#define RegGetValue RegGetValueW
470#define RegLoadKey RegLoadKeyW
471#if (_WIN32_WINNT >= 0x0600)
472#define RegLoadMUIString RegLoadMUIStringW
474#define RegOpenKey RegOpenKeyW
475#define RegOpenKeyEx RegOpenKeyExW
476#define RegQueryInfoKey RegQueryInfoKeyW
477#define RegQueryMultipleValues RegQueryMultipleValuesW
478#define RegQueryValue RegQueryValueW
479#define RegQueryValueEx RegQueryValueExW
480#define RegReplaceKey RegReplaceKeyW
481#define RegRestoreKey RegRestoreKeyW
482#define RegSaveKey RegSaveKeyW
483#define RegSaveKeyEx RegSaveKeyExW
484#if (_WIN32_WINNT >= 0x0600)
485#define RegSetKeyValue RegSetKeyValueW
487#define RegSetValue RegSetValueW
488#define RegSetValueEx RegSetValueExW
489#define RegUnLoadKey RegUnLoadKeyW
492#define AbortSystemShutdown AbortSystemShutdownA
493#define InitiateSystemShutdown InitiateSystemShutdownA
494#define InitiateSystemShutdownEx InitiateSystemShutdownExA
495#define RegConnectRegistry RegConnectRegistryA
496#if (_WIN32_WINNT >= 0x0600)
497#define InitiateShutdown InitiateShutdownA
498#define RegCopyTree RegCopyTreeA
500#define RegCreateKey RegCreateKeyA
501#define RegCreateKeyEx RegCreateKeyExA
502#define RegDeleteKey RegDeleteKeyA
503#define RegDeleteKeyEx RegDeleteKeyExA
504#if (_WIN32_WINNT >= 0x0600)
505#define RegDeleteKeyValue RegDeleteKeyValueA
506#define RegDeleteTree RegDeleteTreeA
508#define RegDeleteValue RegDeleteValueA
509#define RegEnumKey RegEnumKeyA
510#define RegEnumKeyEx RegEnumKeyExA
511#define RegEnumValue RegEnumValueA
512#if (_WIN32_WINNT >= 0x0600)
513#define RegGetValue RegGetValueA
515#define RegLoadKey RegLoadKeyA
516#if (_WIN32_WINNT >= 0x0600)
517#define RegLoadMUIString RegLoadMUIStringA
519#define RegOpenKey RegOpenKeyA
520#define RegOpenKeyEx RegOpenKeyExA
521#define RegQueryInfoKey RegQueryInfoKeyA
522#define RegQueryMultipleValues RegQueryMultipleValuesA
523#define RegQueryValue RegQueryValueA
524#define RegQueryValueEx RegQueryValueExA
525#define RegReplaceKey RegReplaceKeyA
526#define RegRestoreKey RegRestoreKeyA
527#define RegSaveKey RegSaveKeyA
528#define RegSaveKeyEx RegSaveKeyExA
529#if (_WIN32_WINNT >= 0x0600)
530#define RegSetKeyValue RegSetKeyValueA
532#define RegSetValue RegSetValueA
533#define RegSetValueEx RegSetValueExA
534#define RegUnLoadKey RegUnLoadKeyA
#define RegCloseKey(hKey)
LSTATUS WINAPI RegCopyTreeW(_In_ HKEY, _In_opt_ LPCWSTR, _In_ HKEY)
LSTATUS WINAPI RegDeleteTreeW(_In_ HKEY, _In_opt_ LPCWSTR)
LONG RegLoadMUIStringW(IN HKEY hKey, IN LPCWSTR pszValue OPTIONAL, OUT LPWSTR pszOutBuf, IN DWORD cbOutBuf, OUT LPDWORD pcbData OPTIONAL, IN DWORD Flags, IN LPCWSTR pszDirectory OPTIONAL)
static LSTATUS(WINAPI *pRegDeleteTreeW)(HKEY
DWORD WINAPI InitiateShutdownA(LPSTR lpMachineName, LPSTR lpMessage, DWORD dwGracePeriod, DWORD dwShutdownFlags, DWORD dwReason)
DWORD WINAPI InitiateShutdownW(LPWSTR lpMachineName, LPWSTR lpMessage, DWORD dwGracePeriod, DWORD dwShutdownFlags, DWORD dwReason)
LSTATUS WINAPI RegGetValueW(HKEY hKey, LPCWSTR pszSubKey, LPCWSTR pszValue, DWORD dwFlags, LPDWORD pdwType, PVOID pvData, LPDWORD pcbData)
LONG WINAPI RegDeleteTreeA(IN HKEY hKey, IN LPCSTR lpSubKey OPTIONAL)
LONG WINAPI RegDisablePredefinedCacheEx(VOID)
LONG WINAPI RegQueryReflectionKey(IN HKEY hBase, OUT BOOL *bIsReflectionDisabled)
LSTATUS WINAPI RegGetValueA(HKEY hKey, LPCSTR pszSubKey, LPCSTR pszValue, DWORD dwFlags, LPDWORD pdwType, PVOID pvData, LPDWORD pcbData)
LONG WINAPI RegDisablePredefinedCache(VOID)
LONG WINAPI RegSaveKeyExA(HKEY hKey, LPCSTR lpFile, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD Flags)
LONG WINAPI RegEnableReflectionKey(IN HKEY hBase)
LONG WINAPI RegSetKeyValueA(IN HKEY hKey, IN LPCSTR lpSubKey OPTIONAL, IN LPCSTR lpValueName OPTIONAL, IN DWORD dwType, IN LPCVOID lpData OPTIONAL, IN DWORD cbData)
LONG WINAPI RegCopyTreeA(IN HKEY hKeySrc, IN LPCSTR lpSubKey OPTIONAL, IN HKEY hKeyDest)
LONG WINAPI RegLoadMUIStringA(IN HKEY hKey, IN LPCSTR pszValue OPTIONAL, OUT LPSTR pszOutBuf, IN DWORD cbOutBuf, OUT LPDWORD pcbData OPTIONAL, IN DWORD Flags, IN LPCSTR pszDirectory OPTIONAL)
LONG WINAPI RegSaveKeyExW(HKEY hKey, LPCWSTR lpFile, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD Flags)
LONG WINAPI RegDisableReflectionKey(IN HKEY hBase)
LONG WINAPI RegDeleteKeyValueW(IN HKEY hKey, IN LPCWSTR lpSubKey OPTIONAL, IN LPCWSTR lpValueName OPTIONAL)
LONG WINAPI RegDeleteKeyValueA(IN HKEY hKey, IN LPCSTR lpSubKey OPTIONAL, IN LPCSTR lpValueName OPTIONAL)
LONG WINAPI RegSetKeyValueW(IN HKEY hKey, IN LPCWSTR lpSubKey OPTIONAL, IN LPCWSTR lpValueName OPTIONAL, IN DWORD dwType, IN LPCVOID lpData OPTIONAL, IN DWORD cbData)
_Must_inspect_result_ _In_ PFILE_OBJECT _In_ SECURITY_INFORMATION SecurityInformation
DWORD SECURITY_INFORMATION
#define _Out_writes_(size)
#define _Out_writes_opt_(size)
#define _Return_type_success_(expr)
#define _When_(expr, annos)
#define _Out_writes_to_opt_(size, count)
#define _Out_writes_bytes_to_opt_(size, count)
#define _In_reads_bytes_opt_(size)
#define _NullNull_terminated_
#define _Out_writes_bytes_opt_(size)
#define __out_data_source(src_sym)
_In_ PSID _Out_writes_to_opt_ cchName LPSTR _Inout_ LPDWORD cchName
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
_In_ DWORD _Out_writes_bytes_to_opt_ pcbData void _Inout_ DWORD * pcbData
_In_ ULONG _In_opt_ PVOID pvData
_Reserved_ PVOID Reserved
LSTATUS WINAPI RegDeleteValueW(_In_ HKEY, _In_opt_ LPCWSTR)
LSTATUS WINAPI RegOpenKeyA(_In_ HKEY, _In_opt_ LPCSTR, _Out_ PHKEY)
LSTATUS WINAPI RegQueryValueA(_In_ HKEY hKey, _In_opt_ LPCSTR lpSubKey, _Out_writes_bytes_to_opt_(*lpcbData, *lpcbData) __out_data_source(REGISTRY) LPSTR lpData, _Inout_opt_ PLONG lpcbData)
LSTATUS WINAPI RegSetValueExA(_In_ HKEY hKey, _In_opt_ LPCSTR lpValueName, _Reserved_ DWORD Reserved, _In_ DWORD dwType, _In_reads_bytes_opt_(cbData) const BYTE *lpData, _In_ DWORD cbData)
LSTATUS WINAPI RegDeleteKeyExW(_In_ HKEY hKey, _In_ LPCWSTR lpSubKey, _In_ REGSAM samDesired, _Reserved_ DWORD Reserved)
BOOL WINAPI AbortSystemShutdownW(_In_opt_ LPCWSTR)
LSTATUS WINAPI RegSetValueA(_In_ HKEY hKey, _In_opt_ LPCSTR lpSubKey, _In_ DWORD dwType, _In_reads_bytes_opt_(cbData) LPCSTR lpData, _In_ DWORD cbData)
LSTATUS WINAPI RegEnumKeyW(_In_ HKEY hKey, _In_ DWORD dwIndex, _Out_writes_opt_(cchName) LPWSTR lpName, _In_ DWORD cchName)
LSTATUS WINAPI RegSetValueExW(_In_ HKEY hKey, _In_opt_ LPCWSTR lpValueName, _Reserved_ DWORD Reserved, _In_ DWORD dwType, _In_reads_bytes_opt_(cbData) const BYTE *lpData, _In_ DWORD cbData)
BOOL WINAPI InitiateSystemShutdownA(_In_opt_ LPSTR, _In_opt_ LPSTR, _In_ DWORD, _In_ BOOL, _In_ BOOL)
LSTATUS WINAPI RegGetKeySecurity(_In_ HKEY hKey, _In_ SECURITY_INFORMATION SecurityInformation, _Out_writes_bytes_opt_(*lpcbSecurityDescriptor) PSECURITY_DESCRIPTOR pSecurityDescriptor, _Inout_ LPDWORD lpcbSecurityDescriptor)
LSTATUS WINAPI RegReplaceKeyW(_In_ HKEY, _In_opt_ LPCWSTR, _In_ LPCWSTR, _In_ LPCWSTR)
LSTATUS WINAPI RegOpenCurrentUser(_In_ REGSAM, _Out_ PHKEY)
LSTATUS WINAPI RegDeleteKeyExA(_In_ HKEY hKey, _In_ LPCSTR lpSubKey, _In_ REGSAM samDesired, _Reserved_ DWORD Reserved)
LSTATUS WINAPI RegFlushKey(_In_ HKEY)
BOOL WINAPI InitiateSystemShutdownW(_In_opt_ LPWSTR, _In_opt_ LPWSTR, _In_ DWORD, _In_ BOOL, _In_ BOOL)
LSTATUS WINAPI RegQueryMultipleValuesA(_In_ HKEY hKey, _Out_writes_(num_vals) PVALENTA val_list, _In_ DWORD num_vals, _Out_writes_bytes_to_opt_(*ldwTotsize, *ldwTotsize) __out_data_source(REGISTRY) LPSTR lpValueBuf, _Inout_opt_ LPDWORD ldwTotsize)
BOOL WINAPI InitiateSystemShutdownExA(_In_opt_ LPSTR, _In_opt_ LPSTR, _In_ DWORD, _In_ BOOL, _In_ BOOL, _In_ DWORD)
LSTATUS WINAPI RegOpenKeyW(_In_ HKEY, _In_opt_ LPCWSTR, _Out_ PHKEY)
LSTATUS WINAPI RegEnumValueA(_In_ HKEY hKey, _In_ DWORD dwIndex, _Out_writes_to_opt_(*lpcchValueName, *lpcchValueName+1) LPSTR lpValueName, _Inout_ LPDWORD lpcchValueName, _Reserved_ LPDWORD lpReserved, _Out_opt_ LPDWORD lpType, _Out_writes_bytes_to_opt_(*lpcbData, *lpcbData) __out_data_source(REGISTRY) LPBYTE lpData, _Inout_opt_ LPDWORD lpcbData)
LSTATUS WINAPI RegCreateKeyExA(_In_ HKEY hKey, _In_ LPCSTR lpSubKey, _Reserved_ DWORD Reserved, _In_opt_ LPSTR lpClass, _In_ DWORD dwOptions, _In_ REGSAM samDesired, _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes, _Out_ PHKEY phkResult, _Out_opt_ PDWORD lpdwDisposition)
LSTATUS WINAPI RegEnumKeyA(_In_ HKEY hKey, _In_ DWORD dwIndex, _Out_writes_opt_(cchName) LPSTR lpName, _In_ DWORD cchName)
LSTATUS WINAPI RegReplaceKeyA(_In_ HKEY, _In_opt_ LPCSTR, _In_ LPCSTR, _In_ LPCSTR)
LSTATUS WINAPI RegLoadKeyA(_In_ HKEY, _In_opt_ LPCSTR, _In_ LPCSTR)
LSTATUS WINAPI RegRestoreKeyW(_In_ HKEY, _In_ LPCWSTR, _In_ DWORD)
BOOL WINAPI InitiateSystemShutdownExW(_In_opt_ LPWSTR, _In_opt_ LPWSTR, _In_ DWORD, _In_ BOOL, _In_ BOOL, _In_ DWORD)
LSTATUS WINAPI RegSaveKeyA(_In_ HKEY, _In_ LPCSTR, _In_opt_ LPSECURITY_ATTRIBUTES)
LSTATUS WINAPI RegEnumKeyExA(_In_ HKEY hKey, _In_ DWORD dwIndex, _Out_writes_to_opt_(*lpcchName, *lpcchName+1) LPSTR lpName, _Inout_ LPDWORD lpcchName, _Reserved_ LPDWORD lpReserved, _Out_writes_to_opt_(*lpcchClass, *lpcchClass+1) LPSTR lpClass, _Inout_opt_ LPDWORD lpcchClass, _Out_opt_ PFILETIME lpftLastWriteTime)
#define RRF_RT_REG_MULTI_SZ
LSTATUS WINAPI RegQueryValueExW(_In_ HKEY hKey, _In_opt_ LPCWSTR lpValueName, _Reserved_ LPDWORD lpReserved, _Out_opt_ LPDWORD lpType, _Out_writes_bytes_to_opt_(*lpcbData, *lpcbData) __out_data_source(REGISTRY) LPBYTE lpData, _When_(lpData==NULL, _Out_opt_) _When_(lpData !=NULL, _Inout_opt_) LPDWORD lpcbData)
LSTATUS WINAPI RegRestoreKeyA(_In_ HKEY, _In_ LPCSTR, _In_ DWORD)
BOOL WINAPI AbortSystemShutdownA(_In_opt_ LPCSTR)
LSTATUS WINAPI RegQueryValueExA(_In_ HKEY hKey, _In_opt_ LPCSTR lpValueName, _Reserved_ LPDWORD lpReserved, _Out_opt_ LPDWORD lpType, _Out_writes_bytes_to_opt_(*lpcbData, *lpcbData) __out_data_source(REGISTRY) LPBYTE lpData, _When_(lpData==NULL, _Out_opt_) _When_(lpData !=NULL, _Inout_opt_) LPDWORD lpcbData)
LSTATUS WINAPI RegUnLoadKeyW(_In_ HKEY, _In_opt_ LPCWSTR)
LSTATUS WINAPI RegQueryInfoKeyA(_In_ HKEY hKey, _Out_writes_to_opt_(*lpcchClass, *lpcchClass+1) LPSTR lpClass, _Inout_opt_ LPDWORD lpcchClass, _Reserved_ LPDWORD lpReserved, _Out_opt_ LPDWORD lpcSubKeys, _Out_opt_ LPDWORD lpcbMaxSubKeyLen, _Out_opt_ LPDWORD lpcbMaxClassLen, _Out_opt_ LPDWORD lpcValues, _Out_opt_ LPDWORD lpcbMaxValueNameLen, _Out_opt_ LPDWORD lpcbMaxValueLen, _Out_opt_ LPDWORD lpcbSecurityDescriptor, _Out_opt_ PFILETIME lpftLastWriteTime)
LSTATUS WINAPI RegOpenKeyExW(_In_ HKEY, _In_opt_ LPCWSTR, _In_opt_ DWORD, _In_ REGSAM, _Out_ PHKEY)
LSTATUS WINAPI RegLoadKeyW(_In_ HKEY, _In_opt_ LPCWSTR, _In_ LPCWSTR)
LSTATUS WINAPI RegQueryMultipleValuesW(_In_ HKEY hKey, _Out_writes_(num_vals) PVALENTW val_list, _In_ DWORD num_vals, _Out_writes_bytes_to_opt_(*ldwTotsize, *ldwTotsize) __out_data_source(REGISTRY) LPWSTR lpValueBuf, _Inout_opt_ LPDWORD ldwTotsize)
LSTATUS WINAPI RegNotifyChangeKeyValue(_In_ HKEY, _In_ BOOL, _In_ DWORD, _In_opt_ HANDLE, _In_ BOOL)
LSTATUS WINAPI RegConnectRegistryA(_In_opt_ LPCSTR, _In_ HKEY, _Out_ PHKEY)
LSTATUS WINAPI RegDeleteValueA(_In_ HKEY, _In_opt_ LPCSTR)
#define RRF_RT_REG_EXPAND_SZ
LSTATUS WINAPI RegUnLoadKeyA(_In_ HKEY, _In_opt_ LPCSTR)
LSTATUS WINAPI RegCreateKeyExW(_In_ HKEY hKey, _In_ LPCWSTR lpSubKey, _Reserved_ DWORD Reserved, _In_opt_ LPWSTR lpClass, _In_ DWORD dwOptions, _In_ REGSAM samDesired, _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes, _Out_ PHKEY phkResult, _Out_opt_ PDWORD lpdwDisposition)
struct value_entW VALENTW
LSTATUS WINAPI RegOpenKeyExA(_In_ HKEY, _In_opt_ LPCSTR, _In_opt_ DWORD, _In_ REGSAM, _Out_ PHKEY)
LSTATUS WINAPI RegDeleteKeyA(_In_ HKEY hKey, _In_ LPCSTR lpSubKey)
LSTATUS WINAPI RegCreateKeyA(_In_ HKEY hKey, _In_opt_ LPCSTR lpSubKey, _Out_ PHKEY phkResult)
LSTATUS WINAPI RegQueryValueW(_In_ HKEY hKey, _In_opt_ LPCWSTR lpSubKey, _Out_writes_bytes_to_opt_(*lpcbData, *lpcbData) __out_data_source(REGISTRY) LPWSTR lpData, _Inout_opt_ PLONG lpcbData)
struct value_entA VALENTA
struct value_entA * PVALENTA
LSTATUS WINAPI RegSetValueW(_In_ HKEY hKey, _In_opt_ LPCWSTR lpSubKey, _In_ DWORD dwType, _In_reads_bytes_opt_(cbData) LPCWSTR lpData, _In_ DWORD cbData)
LSTATUS WINAPI RegQueryInfoKeyW(_In_ HKEY hKey, _Out_writes_to_opt_(*lpcchClass, *lpcchClass+1) LPWSTR lpClass, _Inout_opt_ LPDWORD lpcchClass, _Reserved_ LPDWORD lpReserved, _Out_opt_ LPDWORD lpcSubKeys, _Out_opt_ LPDWORD lpcbMaxSubKeyLen, _Out_opt_ LPDWORD lpcbMaxClassLen, _Out_opt_ LPDWORD lpcValues, _Out_opt_ LPDWORD lpcbMaxValueNameLen, _Out_opt_ LPDWORD lpcbMaxValueLen, _Out_opt_ LPDWORD lpcbSecurityDescriptor, _Out_opt_ PFILETIME lpftLastWriteTime)
LSTATUS WINAPI RegDeleteKeyW(_In_ HKEY hKey, _In_ LPCWSTR lpSubKey)
LSTATUS WINAPI RegSetKeySecurity(_In_ HKEY, _In_ SECURITY_INFORMATION, _In_ PSECURITY_DESCRIPTOR)
struct value_entW * PVALENTW
LSTATUS WINAPI RegSaveKeyW(_In_ HKEY, _In_ LPCWSTR, _In_opt_ LPSECURITY_ATTRIBUTES)
LSTATUS WINAPI RegCreateKeyW(_In_ HKEY hKey, _In_opt_ LPCWSTR lpSubKey, _Out_ PHKEY phkResult)
LSTATUS WINAPI RegConnectRegistryW(_In_opt_ LPCWSTR, _In_ HKEY, _Out_ PHKEY)
LSTATUS WINAPI RegEnumValueW(_In_ HKEY hKey, _In_ DWORD dwIndex, _Out_writes_to_opt_(*lpcchValueName, *lpcchValueName+1) LPWSTR lpValueName, _Inout_ LPDWORD lpcchValueName, _Reserved_ LPDWORD lpReserved, _Out_opt_ LPDWORD lpType, _Out_writes_bytes_to_opt_(*lpcbData, *lpcbData) __out_data_source(REGISTRY) LPBYTE lpData, _Inout_opt_ LPDWORD lpcbData)
LSTATUS WINAPI RegEnumKeyExW(_In_ HKEY hKey, _In_ DWORD dwIndex, _Out_writes_to_opt_(*lpcchName, *lpcchName+1) LPWSTR lpName, _Inout_ LPDWORD lpcchName, _Reserved_ LPDWORD lpReserved, _Out_writes_to_opt_(*lpcchClass, *lpcchClass+1) LPWSTR lpClass, _Inout_opt_ LPDWORD lpcchClass, _Out_opt_ PFILETIME lpftLastWriteTime)
_Must_inspect_result_ _In_ ULONG Flags