/*++ BUILD Version: 0001 // Increment this if a change has global effects Copyright (c) 1991-1996 Microsoft Corporation Module Name: Winreg.h Abstract: This module contains the function prototypes and constant, type and structure definitions for the Windows 32-Bit Registry API. --*/ #ifndef _WINREG_ #define _WINREG_ #ifdef __cplusplus extern "C" { #endif #ifndef WINVER #define WINVER 0x0400 // version 4.0 #endif /* !WINVER */ // // Requested Key access mask type. // typedef ACCESS_MASK REGSAM; // // Type definitions. // DECLARE_HANDLE(HKEY); typedef HKEY *PHKEY; // // Reserved Key Handles. // #define HKEY_CLASSES_ROOT (( HKEY ) 0x80000000 ) #define HKEY_CURRENT_USER (( HKEY ) 0x80000001 ) #define HKEY_LOCAL_MACHINE (( HKEY ) 0x80000002 ) #define HKEY_USERS (( HKEY ) 0x80000003 ) #define HKEY_PERFORMANCE_DATA (( HKEY ) 0x80000004 ) #if(WINVER >= 0x0400) #define HKEY_CURRENT_CONFIG (( HKEY ) 0x80000005 ) #define HKEY_DYN_DATA (( HKEY ) 0x80000006 ) /*NOINC*/ #ifndef _PROVIDER_STRUCTS_DEFINED #define _PROVIDER_STRUCTS_DEFINED #define PROVIDER_KEEPS_VALUE_LENGTH 0x1 struct val_context { int valuelen; // the total length of this value LPVOID value_context; // provider's context LPVOID val_buff_ptr; // where in the ouput buffer the value is. }; typedef struct val_context FAR *PVALCONTEXT; typedef struct pvalueA { // Provider supplied value/context. LPSTR pv_valuename; // The value name pointer int pv_valuelen; LPVOID pv_value_context; DWORD pv_type; }PVALUEA, FAR *PPVALUEA; typedef struct pvalueW { // Provider supplied value/context. LPWSTR pv_valuename; // The value name pointer int pv_valuelen; LPVOID pv_value_context; DWORD pv_type; }PVALUEW, FAR *PPVALUEW; #ifdef UNICODE typedef PVALUEW PVALUE; typedef PPVALUEW PPVALUE; #else typedef PVALUEA PVALUE; typedef PPVALUEA PPVALUE; #endif // UNICODE typedef DWORD _cdecl QUERYHANDLER (LPVOID keycontext, PVALCONTEXT val_list, DWORD num_vals, LPVOID outputbuffer, DWORD FAR *total_outlen, DWORD input_blen); typedef QUERYHANDLER FAR *PQUERYHANDLER; typedef struct provider_info { PQUERYHANDLER pi_R0_1val; PQUERYHANDLER pi_R0_allvals; PQUERYHANDLER pi_R3_1val; PQUERYHANDLER pi_R3_allvals; DWORD pi_flags; // capability flags (none defined yet). LPVOID pi_key_context; }REG_PROVIDER; typedef struct provider_info FAR *PPROVIDER; typedef struct value_entA { LPSTR ve_valuename; DWORD ve_valuelen; DWORD ve_valueptr; DWORD ve_type; }VALENTA, FAR *PVALENTA; typedef struct value_entW { LPWSTR ve_valuename; DWORD ve_valuelen; DWORD ve_valueptr; DWORD ve_type; }VALENTW, FAR *PVALENTW; #ifdef UNICODE typedef VALENTW VALENT; typedef PVALENTW PVALENT; #else typedef VALENTA VALENT; typedef PVALENTA PVALENT; #endif // UNICODE #endif // not(_PROVIDER_STRUCTS_DEFINED) /*INC*/ #endif /* WINVER >= 0x0400 */ // // Default values for parameters that do not exist in the Win 3.1 // compatible APIs. // #define WIN31_CLASS NULL // // API Prototypes. // WINADVAPI LONG APIENTRY RegCloseKey ( HKEY hKey ); WINADVAPI LONG APIENTRY RegConnectRegistryA ( LPSTR lpMachineName, HKEY hKey, PHKEY phkResult ); WINADVAPI LONG APIENTRY RegConnectRegistryW ( LPWSTR lpMachineName, HKEY hKey, PHKEY phkResult ); #ifdef UNICODE #define RegConnectRegistry RegConnectRegistryW #else #define RegConnectRegistry RegConnectRegistryA #endif // !UNICODE WINADVAPI LONG APIENTRY RegCreateKeyA ( HKEY hKey, LPCSTR lpSubKey, PHKEY phkResult ); WINADVAPI LONG APIENTRY RegCreateKeyW ( HKEY hKey, LPCWSTR lpSubKey, PHKEY phkResult ); #ifdef UNICODE #define RegCreateKey RegCreateKeyW #else #define RegCreateKey RegCreateKeyA #endif // !UNICODE WINADVAPI LONG APIENTRY RegCreateKeyExA ( HKEY hKey, LPCSTR lpSubKey, DWORD Reserved, LPSTR lpClass, DWORD dwOptions, REGSAM samDesired, LPSECURITY_ATTRIBUTES lpSecurityAttributes, PHKEY phkResult, LPDWORD lpdwDisposition ); WINADVAPI LONG APIENTRY RegCreateKeyExW ( HKEY hKey, LPCWSTR lpSubKey, DWORD Reserved, LPWSTR lpClass, DWORD dwOptions, REGSAM samDesired, LPSECURITY_ATTRIBUTES lpSecurityAttributes, PHKEY phkResult, LPDWORD lpdwDisposition ); #ifdef UNICODE #define RegCreateKeyEx RegCreateKeyExW #else #define RegCreateKeyEx RegCreateKeyExA #endif // !UNICODE WINADVAPI LONG APIENTRY RegDeleteKeyA ( HKEY hKey, LPCSTR lpSubKey ); WINADVAPI LONG APIENTRY RegDeleteKeyW ( HKEY hKey, LPCWSTR lpSubKey ); #ifdef UNICODE #define RegDeleteKey RegDeleteKeyW #else #define RegDeleteKey RegDeleteKeyA #endif // !UNICODE WINADVAPI LONG APIENTRY RegDeleteValueA ( HKEY hKey, LPCSTR lpValueName ); WINADVAPI LONG APIENTRY RegDeleteValueW ( HKEY hKey, LPCWSTR lpValueName ); #ifdef UNICODE #define RegDeleteValue RegDeleteValueW #else #define RegDeleteValue RegDeleteValueA #endif // !UNICODE WINADVAPI LONG APIENTRY RegEnumKeyA ( HKEY hKey, DWORD dwIndex, LPSTR lpName, DWORD cbName ); WINADVAPI LONG APIENTRY RegEnumKeyW ( HKEY hKey, DWORD dwIndex, LPWSTR lpName, DWORD cbName ); #ifdef UNICODE #define RegEnumKey RegEnumKeyW #else #define RegEnumKey RegEnumKeyA #endif // !UNICODE WINADVAPI LONG APIENTRY RegEnumKeyExA ( HKEY hKey, DWORD dwIndex, LPSTR lpName, LPDWORD lpcbName, LPDWORD lpReserved, LPSTR lpClass, LPDWORD lpcbClass, PFILETIME lpftLastWriteTime ); WINADVAPI LONG APIENTRY RegEnumKeyExW ( HKEY hKey, DWORD dwIndex, LPWSTR lpName, LPDWORD lpcbName, LPDWORD lpReserved, LPWSTR lpClass, LPDWORD lpcbClass, PFILETIME lpftLastWriteTime ); #ifdef UNICODE #define RegEnumKeyEx RegEnumKeyExW #else #define RegEnumKeyEx RegEnumKeyExA #endif // !UNICODE WINADVAPI LONG APIENTRY RegEnumValueA ( HKEY hKey, DWORD dwIndex, LPSTR lpValueName, LPDWORD lpcbValueName, LPDWORD lpReserved, LPDWORD lpType, LPBYTE lpData, LPDWORD lpcbData ); WINADVAPI LONG APIENTRY RegEnumValueW ( HKEY hKey, DWORD dwIndex, LPWSTR lpValueName, LPDWORD lpcbValueName, LPDWORD lpReserved, LPDWORD lpType, LPBYTE lpData, LPDWORD lpcbData ); #ifdef UNICODE #define RegEnumValue RegEnumValueW #else #define RegEnumValue RegEnumValueA #endif // !UNICODE WINADVAPI LONG APIENTRY RegFlushKey ( HKEY hKey ); WINADVAPI LONG APIENTRY RegGetKeySecurity ( HKEY hKey, SECURITY_INFORMATION SecurityInformation, PSECURITY_DESCRIPTOR pSecurityDescriptor, LPDWORD lpcbSecurityDescriptor ); WINADVAPI LONG APIENTRY RegLoadKeyA ( HKEY hKey, LPCSTR lpSubKey, LPCSTR lpFile ); WINADVAPI LONG APIENTRY RegLoadKeyW ( HKEY hKey, LPCWSTR lpSubKey, LPCWSTR lpFile ); #ifdef UNICODE #define RegLoadKey RegLoadKeyW #else #define RegLoadKey RegLoadKeyA #endif // !UNICODE WINADVAPI LONG APIENTRY RegNotifyChangeKeyValue ( HKEY hKey, BOOL bWatchSubtree, DWORD dwNotifyFilter, HANDLE hEvent, BOOL fAsynchronus ); WINADVAPI LONG APIENTRY RegOpenKeyA ( HKEY hKey, LPCSTR lpSubKey, PHKEY phkResult ); WINADVAPI LONG APIENTRY RegOpenKeyW ( HKEY hKey, LPCWSTR lpSubKey, PHKEY phkResult ); #ifdef UNICODE #define RegOpenKey RegOpenKeyW #else #define RegOpenKey RegOpenKeyA #endif // !UNICODE WINADVAPI LONG APIENTRY RegOpenKeyExA ( HKEY hKey, LPCSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult ); WINADVAPI LONG APIENTRY RegOpenKeyExW ( HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult ); #ifdef UNICODE #define RegOpenKeyEx RegOpenKeyExW #else #define RegOpenKeyEx RegOpenKeyExA #endif // !UNICODE WINADVAPI LONG APIENTRY RegQueryInfoKeyA ( HKEY hKey, LPSTR lpClass, LPDWORD lpcbClass, LPDWORD lpReserved, LPDWORD lpcSubKeys, LPDWORD lpcbMaxSubKeyLen, LPDWORD lpcbMaxClassLen, LPDWORD lpcValues, LPDWORD lpcbMaxValueNameLen, LPDWORD lpcbMaxValueLen, LPDWORD lpcbSecurityDescriptor, PFILETIME lpftLastWriteTime ); WINADVAPI LONG APIENTRY RegQueryInfoKeyW ( HKEY hKey, LPWSTR lpClass, LPDWORD lpcbClass, LPDWORD lpReserved, LPDWORD lpcSubKeys, LPDWORD lpcbMaxSubKeyLen, LPDWORD lpcbMaxClassLen, LPDWORD lpcValues, LPDWORD lpcbMaxValueNameLen, LPDWORD lpcbMaxValueLen, LPDWORD lpcbSecurityDescriptor, PFILETIME lpftLastWriteTime ); #ifdef UNICODE #define RegQueryInfoKey RegQueryInfoKeyW #else #define RegQueryInfoKey RegQueryInfoKeyA #endif // !UNICODE WINADVAPI LONG APIENTRY RegQueryValueA ( HKEY hKey, LPCSTR lpSubKey, LPSTR lpValue, PLONG lpcbValue ); WINADVAPI LONG APIENTRY RegQueryValueW ( HKEY hKey, LPCWSTR lpSubKey, LPWSTR lpValue, PLONG lpcbValue ); #ifdef UNICODE #define RegQueryValue RegQueryValueW #else #define RegQueryValue RegQueryValueA #endif // !UNICODE #if(WINVER >= 0x0400) WINADVAPI LONG APIENTRY RegQueryMultipleValuesA ( HKEY hKey, PVALENTA val_list, DWORD num_vals, LPSTR lpValueBuf, LPDWORD ldwTotsize ); WINADVAPI LONG APIENTRY RegQueryMultipleValuesW ( HKEY hKey, PVALENTW val_list, DWORD num_vals, LPWSTR lpValueBuf, LPDWORD ldwTotsize ); #ifdef UNICODE #define RegQueryMultipleValues RegQueryMultipleValuesW #else #define RegQueryMultipleValues RegQueryMultipleValuesA #endif // !UNICODE #endif /* WINVER >= 0x0400 */ WINADVAPI LONG APIENTRY RegQueryValueExA ( HKEY hKey, LPCSTR lpValueName, LPDWORD lpReserved, LPDWORD lpType, LPBYTE lpData, LPDWORD lpcbData ); WINADVAPI LONG APIENTRY RegQueryValueExW ( HKEY hKey, LPCWSTR lpValueName, LPDWORD lpReserved, LPDWORD lpType, LPBYTE lpData, LPDWORD lpcbData ); #ifdef UNICODE #define RegQueryValueEx RegQueryValueExW #else #define RegQueryValueEx RegQueryValueExA #endif // !UNICODE WINADVAPI LONG APIENTRY RegReplaceKeyA ( HKEY hKey, LPCSTR lpSubKey, LPCSTR lpNewFile, LPCSTR lpOldFile ); WINADVAPI LONG APIENTRY RegReplaceKeyW ( HKEY hKey, LPCWSTR lpSubKey, LPCWSTR lpNewFile, LPCWSTR lpOldFile ); #ifdef UNICODE #define RegReplaceKey RegReplaceKeyW #else #define RegReplaceKey RegReplaceKeyA #endif // !UNICODE WINADVAPI LONG APIENTRY RegRestoreKeyA ( HKEY hKey, LPCSTR lpFile, DWORD dwFlags ); WINADVAPI LONG APIENTRY RegRestoreKeyW ( HKEY hKey, LPCWSTR lpFile, DWORD dwFlags ); #ifdef UNICODE #define RegRestoreKey RegRestoreKeyW #else #define RegRestoreKey RegRestoreKeyA #endif // !UNICODE WINADVAPI LONG APIENTRY RegSaveKeyA ( HKEY hKey, LPCSTR lpFile, LPSECURITY_ATTRIBUTES lpSecurityAttributes ); WINADVAPI LONG APIENTRY RegSaveKeyW ( HKEY hKey, LPCWSTR lpFile, LPSECURITY_ATTRIBUTES lpSecurityAttributes ); #ifdef UNICODE #define RegSaveKey RegSaveKeyW #else #define RegSaveKey RegSaveKeyA #endif // !UNICODE WINADVAPI LONG APIENTRY RegSetKeySecurity ( HKEY hKey, SECURITY_INFORMATION SecurityInformation, PSECURITY_DESCRIPTOR pSecurityDescriptor ); WINADVAPI LONG APIENTRY RegSetValueA ( HKEY hKey, LPCSTR lpSubKey, DWORD dwType, LPCSTR lpData, DWORD cbData ); WINADVAPI LONG APIENTRY RegSetValueW ( HKEY hKey, LPCWSTR lpSubKey, DWORD dwType, LPCWSTR lpData, DWORD cbData ); #ifdef UNICODE #define RegSetValue RegSetValueW #else #define RegSetValue RegSetValueA #endif // !UNICODE WINADVAPI LONG APIENTRY RegSetValueExA ( HKEY hKey, LPCSTR lpValueName, DWORD Reserved, DWORD dwType, CONST BYTE* lpData, DWORD cbData ); WINADVAPI LONG APIENTRY RegSetValueExW ( HKEY hKey, LPCWSTR lpValueName, DWORD Reserved, DWORD dwType, CONST BYTE* lpData, DWORD cbData ); #ifdef UNICODE #define RegSetValueEx RegSetValueExW #else #define RegSetValueEx RegSetValueExA #endif // !UNICODE WINADVAPI LONG APIENTRY RegUnLoadKeyA ( HKEY hKey, LPCSTR lpSubKey ); WINADVAPI LONG APIENTRY RegUnLoadKeyW ( HKEY hKey, LPCWSTR lpSubKey ); #ifdef UNICODE #define RegUnLoadKey RegUnLoadKeyW #else #define RegUnLoadKey RegUnLoadKeyA #endif // !UNICODE // // Remoteable System Shutdown APIs // WINADVAPI BOOL APIENTRY InitiateSystemShutdownA( LPSTR lpMachineName, LPSTR lpMessage, DWORD dwTimeout, BOOL bForceAppsClosed, BOOL bRebootAfterShutdown ); WINADVAPI BOOL APIENTRY InitiateSystemShutdownW( LPWSTR lpMachineName, LPWSTR lpMessage, DWORD dwTimeout, BOOL bForceAppsClosed, BOOL bRebootAfterShutdown ); #ifdef UNICODE #define InitiateSystemShutdown InitiateSystemShutdownW #else #define InitiateSystemShutdown InitiateSystemShutdownA #endif // !UNICODE WINADVAPI BOOL APIENTRY AbortSystemShutdownA( LPSTR lpMachineName ); WINADVAPI BOOL APIENTRY AbortSystemShutdownW( LPWSTR lpMachineName ); #ifdef UNICODE #define AbortSystemShutdown AbortSystemShutdownW #else #define AbortSystemShutdown AbortSystemShutdownA #endif // !UNICODE #ifdef __cplusplus } #endif #endif // _WINREG_