Blame winpr/include/winpr/registry.h

Packit 1fb8d4
/**
Packit 1fb8d4
 * WinPR: Windows Portable Runtime
Packit 1fb8d4
 * Windows Registry
Packit 1fb8d4
 *
Packit 1fb8d4
 * Copyright 2012 Marc-Andre Moreau <marcandre.moreau@gmail.com>
Packit 1fb8d4
 *
Packit 1fb8d4
 * Licensed under the Apache License, Version 2.0 (the "License");
Packit 1fb8d4
 * you may not use this file except in compliance with the License.
Packit 1fb8d4
 * You may obtain a copy of the License at
Packit 1fb8d4
 *
Packit 1fb8d4
 *     http://www.apache.org/licenses/LICENSE-2.0
Packit 1fb8d4
 *
Packit 1fb8d4
 * Unless required by applicable law or agreed to in writing, software
Packit 1fb8d4
 * distributed under the License is distributed on an "AS IS" BASIS,
Packit 1fb8d4
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Packit 1fb8d4
 * See the License for the specific language governing permissions and
Packit 1fb8d4
 * limitations under the License.
Packit 1fb8d4
 */
Packit 1fb8d4
Packit 1fb8d4
#ifndef WINPR_REGISTRY_H
Packit 1fb8d4
#define WINPR_REGISTRY_H
Packit 1fb8d4
Packit 1fb8d4
#include <winpr/windows.h>
Packit 1fb8d4
Packit 1fb8d4
#if defined(_WIN32) && !defined(_UWP)
Packit 1fb8d4
Packit 1fb8d4
#include <winreg.h>
Packit 1fb8d4
Packit 1fb8d4
#else
Packit 1fb8d4
Packit 1fb8d4
#ifdef __cplusplus
Packit Service 5a9772
extern "C"
Packit Service 5a9772
{
Packit 1fb8d4
#endif
Packit 1fb8d4
Packit 1fb8d4
#include <winpr/winpr.h>
Packit 1fb8d4
#include <winpr/wtypes.h>
Packit 1fb8d4
Packit 1fb8d4
#include <winpr/nt.h>
Packit 1fb8d4
#include <winpr/io.h>
Packit 1fb8d4
#include <winpr/error.h>
Packit 1fb8d4
Packit 1fb8d4
#ifndef _WIN32
Packit 1fb8d4
Packit Service 5a9772
#define OWNER_SECURITY_INFORMATION 0x00000001
Packit Service 5a9772
#define GROUP_SECURITY_INFORMATION 0x00000002
Packit Service 5a9772
#define DACL_SECURITY_INFORMATION 0x00000004
Packit Service 5a9772
#define SACL_SECURITY_INFORMATION 0x00000008
Packit Service 5a9772
Packit Service 5a9772
#define REG_OPTION_RESERVED 0x00000000
Packit Service 5a9772
#define REG_OPTION_NON_VOLATILE 0x00000000
Packit Service 5a9772
#define REG_OPTION_VOLATILE 0x00000001
Packit Service 5a9772
#define REG_OPTION_CREATE_LINK 0x00000002
Packit Service 5a9772
#define REG_OPTION_BACKUP_RESTORE 0x00000004
Packit Service 5a9772
#define REG_OPTION_OPEN_LINK 0x00000008
Packit Service 5a9772
Packit Service 5a9772
#define REG_CREATED_NEW_KEY 0x00000001
Packit Service 5a9772
#define REG_OPENED_EXISTING_KEY 0x00000002
Packit Service 5a9772
Packit Service 5a9772
#define REG_NOTIFY_CHANGE_NAME 0x01
Packit Service 5a9772
#define REG_NOTIFY_CHANGE_ATTRIBUTES 0x02
Packit Service 5a9772
#define REG_NOTIFY_CHANGE_LAST_SET 0x04
Packit Service 5a9772
#define REG_NOTIFY_CHANGE_SECURITY 0x08
Packit Service 5a9772
Packit Service 5a9772
#define KEY_QUERY_VALUE 0x00000001
Packit Service 5a9772
#define KEY_SET_VALUE 0x00000002
Packit Service 5a9772
#define KEY_CREATE_SUB_KEY 0x00000004
Packit Service 5a9772
#define KEY_ENUMERATE_SUB_KEYS 0x00000008
Packit Service 5a9772
#define KEY_NOTIFY 0x00000010
Packit Service 5a9772
#define KEY_CREATE_LINK 0x00000020
Packit Service 5a9772
#define KEY_WOW64_64KEY 0x00000100
Packit Service 5a9772
#define KEY_WOW64_32KEY 0x00000200
Packit Service 5a9772
#define KEY_WOW64_RES 0x00000300
Packit Service 5a9772
Packit Service 5a9772
#define REG_WHOLE_HIVE_VOLATILE 0x00000001
Packit Service 5a9772
#define REG_REFRESH_HIVE 0x00000002
Packit Service 5a9772
#define REG_NO_LAZY_FLUSH 0x00000004
Packit Service 5a9772
#define REG_FORCE_RESTORE 0x00000008
Packit Service 5a9772
Packit Service 5a9772
#define KEY_READ                                                                      \
Packit Service 5a9772
	((STANDARD_RIGHTS_READ | KEY_QUERY_VALUE | KEY_ENUMERATE_SUB_KEYS | KEY_NOTIFY) & \
Packit Service 5a9772
	 (~SYNCHRONIZE))
Packit Service 5a9772
Packit Service 5a9772
#define KEY_WRITE ((STANDARD_RIGHTS_WRITE | KEY_SET_VALUE | KEY_CREATE_SUB_KEY) & (~SYNCHRONIZE))
Packit Service 5a9772
Packit Service 5a9772
#define KEY_EXECUTE ((KEY_READ) & (~SYNCHRONIZE))
Packit Service 5a9772
Packit Service 5a9772
#define KEY_ALL_ACCESS                                                             \
Packit Service 5a9772
	((STANDARD_RIGHTS_ALL | KEY_QUERY_VALUE | KEY_SET_VALUE | KEY_CREATE_SUB_KEY | \
Packit Service 5a9772
	  KEY_ENUMERATE_SUB_KEYS | KEY_NOTIFY | KEY_CREATE_LINK) &                     \
Packit Service 5a9772
	 (~SYNCHRONIZE))
Packit Service 5a9772
Packit Service 5a9772
#define REG_NONE 0
Packit Service 5a9772
#define REG_SZ 1
Packit Service 5a9772
#define REG_EXPAND_SZ 2
Packit Service 5a9772
#define REG_BINARY 3
Packit Service 5a9772
#define REG_DWORD 4
Packit Service 5a9772
#define REG_DWORD_LITTLE_ENDIAN 4
Packit Service 5a9772
#define REG_DWORD_BIG_ENDIAN 5
Packit Service 5a9772
#define REG_LINK 6
Packit Service 5a9772
#define REG_MULTI_SZ 7
Packit Service 5a9772
#define REG_RESOURCE_LIST 8
Packit Service 5a9772
#define REG_FULL_RESOURCE_DESCRIPTOR 9
Packit Service 5a9772
#define REG_RESOURCE_REQUIREMENTS_LIST 10
Packit Service 5a9772
#define REG_QWORD 11
Packit Service 5a9772
#define REG_QWORD_LITTLE_ENDIAN 11
Packit Service 5a9772
Packit Service 5a9772
	typedef HANDLE HKEY;
Packit Service 5a9772
	typedef HANDLE* PHKEY;
Packit 1fb8d4
Packit 1fb8d4
#endif
Packit 1fb8d4
Packit Service 5a9772
	typedef ACCESS_MASK REGSAM;
Packit Service 5a9772
Packit Service 5a9772
#define HKEY_CLASSES_ROOT ((HKEY)(LONG_PTR)(LONG)0x80000000)
Packit Service 5a9772
#define HKEY_CURRENT_USER ((HKEY)(LONG_PTR)(LONG)0x80000001)
Packit Service 5a9772
#define HKEY_LOCAL_MACHINE ((HKEY)(LONG_PTR)(LONG)0x80000002)
Packit Service 5a9772
#define HKEY_USERS ((HKEY)(LONG_PTR)(LONG)0x80000003)
Packit Service 5a9772
#define HKEY_PERFORMANCE_DATA ((HKEY)(LONG_PTR)(LONG)0x80000004)
Packit Service 5a9772
#define HKEY_PERFORMANCE_TEXT ((HKEY)(LONG_PTR)(LONG)0x80000050)
Packit Service 5a9772
#define HKEY_PERFORMANCE_NLSTEXT ((HKEY)(LONG_PTR)(LONG)0x80000060)
Packit Service 5a9772
#define HKEY_CURRENT_CONFIG ((HKEY)(LONG_PTR)(LONG)0x80000005)
Packit Service 5a9772
#define HKEY_DYN_DATA ((HKEY)(LONG_PTR)(LONG)0x80000006)
Packit Service 5a9772
#define HKEY_CURRENT_USER_LOCAL_SETTINGS ((HKEY)(LONG_PTR)(LONG)0x80000007)
Packit Service 5a9772
Packit Service 5a9772
#define RRF_RT_REG_NONE 0x00000001
Packit Service 5a9772
#define RRF_RT_REG_SZ 0x00000002
Packit Service 5a9772
#define RRF_RT_REG_EXPAND_SZ 0x00000004
Packit Service 5a9772
#define RRF_RT_REG_BINARY 0x00000008
Packit Service 5a9772
#define RRF_RT_REG_DWORD 0x00000010
Packit Service 5a9772
#define RRF_RT_REG_MULTI_SZ 0x00000020
Packit Service 5a9772
#define RRF_RT_REG_QWORD 0x00000040
Packit Service 5a9772
Packit Service 5a9772
#define RRF_RT_DWORD (RRF_RT_REG_BINARY | RRF_RT_REG_DWORD)
Packit Service 5a9772
#define RRF_RT_QWORD (RRF_RT_REG_BINARY | RRF_RT_REG_QWORD)
Packit Service 5a9772
#define RRF_RT_ANY 0x0000FFFF
Packit Service 5a9772
Packit Service 5a9772
#define RRF_NOEXPAND 0x10000000
Packit Service 5a9772
#define RRF_ZEROONFAILURE 0x20000000
Packit Service 5a9772
Packit Service 5a9772
	struct val_context
Packit Service 5a9772
	{
Packit Service 5a9772
		int valuelen;
Packit Service 5a9772
		LPVOID value_context;
Packit Service 5a9772
		LPVOID val_buff_ptr;
Packit Service 5a9772
	};
Packit Service 5a9772
Packit Service 5a9772
	typedef struct val_context* PVALCONTEXT;
Packit Service 5a9772
Packit Service 5a9772
	typedef struct pvalueA
Packit Service 5a9772
	{
Packit Service 5a9772
		LPSTR pv_valuename;
Packit Service 5a9772
		int pv_valuelen;
Packit Service 5a9772
		LPVOID pv_value_context;
Packit Service 5a9772
		DWORD pv_type;
Packit Service 5a9772
	} PVALUEA, *PPVALUEA;
Packit Service 5a9772
Packit Service 5a9772
	typedef struct pvalueW
Packit Service 5a9772
	{
Packit Service 5a9772
		LPWSTR pv_valuename;
Packit Service 5a9772
		int pv_valuelen;
Packit Service 5a9772
		LPVOID pv_value_context;
Packit Service 5a9772
		DWORD pv_type;
Packit Service 5a9772
	} PVALUEW, *PPVALUEW;
Packit 1fb8d4
Packit 1fb8d4
#ifdef UNICODE
Packit Service 5a9772
	typedef PVALUEW PVALUE;
Packit Service 5a9772
	typedef PPVALUEW PPVALUE;
Packit 1fb8d4
#else
Packit 1fb8d4
typedef PVALUEA PVALUE;
Packit 1fb8d4
typedef PPVALUEA PPVALUE;
Packit 1fb8d4
#endif
Packit 1fb8d4
Packit Service 5a9772
	typedef struct value_entA
Packit Service 5a9772
	{
Packit Service 5a9772
		LPSTR ve_valuename;
Packit Service 5a9772
		DWORD ve_valuelen;
Packit Service 5a9772
		DWORD_PTR ve_valueptr;
Packit Service 5a9772
		DWORD ve_type;
Packit Service 5a9772
	} VALENTA, *PVALENTA;
Packit Service 5a9772
Packit Service 5a9772
	typedef struct value_entW
Packit Service 5a9772
	{
Packit Service 5a9772
		LPWSTR ve_valuename;
Packit Service 5a9772
		DWORD ve_valuelen;
Packit Service 5a9772
		DWORD_PTR ve_valueptr;
Packit Service 5a9772
		DWORD ve_type;
Packit Service 5a9772
	} VALENTW, *PVALENTW;
Packit 1fb8d4
Packit 1fb8d4
#ifdef UNICODE
Packit Service 5a9772
	typedef VALENTW VALENT;
Packit Service 5a9772
	typedef PVALENTW PVALENT;
Packit 1fb8d4
#else
Packit 1fb8d4
typedef VALENTA VALENT;
Packit 1fb8d4
typedef PVALENTA PVALENT;
Packit 1fb8d4
#endif
Packit 1fb8d4
Packit Service 5a9772
	WINPR_API LONG RegCloseKey(HKEY hKey);
Packit 1fb8d4
Packit Service 5a9772
	WINPR_API LONG RegCopyTreeW(HKEY hKeySrc, LPCWSTR lpSubKey, HKEY hKeyDest);
Packit Service 5a9772
	WINPR_API LONG RegCopyTreeA(HKEY hKeySrc, LPCSTR lpSubKey, HKEY hKeyDest);
Packit 1fb8d4
Packit 1fb8d4
#ifdef UNICODE
Packit 1fb8d4
#define RegCopyTree RegCopyTreeW
Packit 1fb8d4
#else
Packit 1fb8d4
#define RegCopyTree RegCopyTreeA
Packit 1fb8d4
#endif
Packit 1fb8d4
Packit Service 5a9772
	WINPR_API LONG RegCreateKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD Reserved, LPWSTR lpClass,
Packit Service 5a9772
	                               DWORD dwOptions, REGSAM samDesired,
Packit Service 5a9772
	                               LPSECURITY_ATTRIBUTES lpSecurityAttributes, PHKEY phkResult,
Packit Service 5a9772
	                               LPDWORD lpdwDisposition);
Packit Service 5a9772
	WINPR_API LONG RegCreateKeyExA(HKEY hKey, LPCSTR lpSubKey, DWORD Reserved, LPSTR lpClass,
Packit Service 5a9772
	                               DWORD dwOptions, REGSAM samDesired,
Packit Service 5a9772
	                               LPSECURITY_ATTRIBUTES lpSecurityAttributes, PHKEY phkResult,
Packit Service 5a9772
	                               LPDWORD lpdwDisposition);
Packit 1fb8d4
Packit 1fb8d4
#ifdef UNICODE
Packit 1fb8d4
#define RegCreateKeyEx RegCreateKeyExW
Packit 1fb8d4
#else
Packit 1fb8d4
#define RegCreateKeyEx RegCreateKeyExA
Packit 1fb8d4
#endif
Packit 1fb8d4
Packit Service 5a9772
	WINPR_API LONG RegDeleteKeyExW(HKEY hKey, LPCWSTR lpSubKey, REGSAM samDesired, DWORD Reserved);
Packit Service 5a9772
	WINPR_API LONG RegDeleteKeyExA(HKEY hKey, LPCSTR lpSubKey, REGSAM samDesired, DWORD Reserved);
Packit 1fb8d4
Packit 1fb8d4
#ifdef UNICODE
Packit 1fb8d4
#define RegDeleteKeyEx RegDeleteKeyExW
Packit 1fb8d4
#else
Packit 1fb8d4
#define RegDeleteKeyEx RegDeleteKeyExA
Packit 1fb8d4
#endif
Packit 1fb8d4
Packit Service 5a9772
	WINPR_API LONG RegDeleteTreeW(HKEY hKey, LPCWSTR lpSubKey);
Packit Service 5a9772
	WINPR_API LONG RegDeleteTreeA(HKEY hKey, LPCSTR lpSubKey);
Packit 1fb8d4
Packit 1fb8d4
#ifdef UNICODE
Packit 1fb8d4
#define RegDeleteTree RegDeleteTreeW
Packit 1fb8d4
#else
Packit 1fb8d4
#define RegDeleteTree RegDeleteTreeA
Packit 1fb8d4
#endif
Packit 1fb8d4
Packit Service 5a9772
	WINPR_API LONG RegDeleteValueW(HKEY hKey, LPCWSTR lpValueName);
Packit Service 5a9772
	WINPR_API LONG RegDeleteValueA(HKEY hKey, LPCSTR lpValueName);
Packit 1fb8d4
Packit 1fb8d4
#ifdef UNICODE
Packit 1fb8d4
#define RegDeleteValue RegDeleteValueW
Packit 1fb8d4
#else
Packit 1fb8d4
#define RegDeleteValue RegDeleteValueA
Packit 1fb8d4
#endif
Packit 1fb8d4
Packit Service 5a9772
	WINPR_API LONG RegDisablePredefinedCacheEx(void);
Packit 1fb8d4
Packit Service 5a9772
	WINPR_API LONG RegEnumKeyExW(HKEY hKey, DWORD dwIndex, LPWSTR lpName, LPDWORD lpcName,
Packit Service 5a9772
	                             LPDWORD lpReserved, LPWSTR lpClass, LPDWORD lpcClass,
Packit Service 5a9772
	                             PFILETIME lpftLastWriteTime);
Packit Service 5a9772
	WINPR_API LONG RegEnumKeyExA(HKEY hKey, DWORD dwIndex, LPSTR lpName, LPDWORD lpcName,
Packit Service 5a9772
	                             LPDWORD lpReserved, LPSTR lpClass, LPDWORD lpcClass,
Packit Service 5a9772
	                             PFILETIME lpftLastWriteTime);
Packit 1fb8d4
Packit 1fb8d4
#ifdef UNICODE
Packit 1fb8d4
#define RegEnumKeyEx RegEnumKeyExW
Packit 1fb8d4
#else
Packit 1fb8d4
#define RegEnumKeyEx RegEnumKeyExA
Packit 1fb8d4
#endif
Packit 1fb8d4
Packit Service 5a9772
	WINPR_API LONG RegEnumValueW(HKEY hKey, DWORD dwIndex, LPWSTR lpValueName,
Packit Service 5a9772
	                             LPDWORD lpcchValueName, LPDWORD lpReserved, LPDWORD lpType,
Packit Service 5a9772
	                             LPBYTE lpData, LPDWORD lpcbData);
Packit Service 5a9772
	WINPR_API LONG RegEnumValueA(HKEY hKey, DWORD dwIndex, LPSTR lpValueName,
Packit Service 5a9772
	                             LPDWORD lpcchValueName, LPDWORD lpReserved, LPDWORD lpType,
Packit Service 5a9772
	                             LPBYTE lpData, LPDWORD lpcbData);
Packit 1fb8d4
Packit 1fb8d4
#ifdef UNICODE
Packit 1fb8d4
#define RegEnumValue RegEnumValueW
Packit 1fb8d4
#else
Packit 1fb8d4
#define RegEnumValue RegEnumValueA
Packit 1fb8d4
#endif
Packit 1fb8d4
Packit Service 5a9772
	WINPR_API LONG RegFlushKey(HKEY hKey);
Packit 1fb8d4
Packit Service 5a9772
	WINPR_API LONG RegGetKeySecurity(HKEY hKey, SECURITY_INFORMATION SecurityInformation,
Packit Service 5a9772
	                                 PSECURITY_DESCRIPTOR pSecurityDescriptor,
Packit Service 5a9772
	                                 LPDWORD lpcbSecurityDescriptor);
Packit 1fb8d4
Packit Service 5a9772
	WINPR_API LONG RegGetValueW(HKEY hkey, LPCWSTR lpSubKey, LPCWSTR lpValue, DWORD dwFlags,
Packit Service 5a9772
	                            LPDWORD pdwType, PVOID pvData, LPDWORD pcbData);
Packit Service 5a9772
	WINPR_API LONG RegGetValueA(HKEY hkey, LPCSTR lpSubKey, LPCSTR lpValue, DWORD dwFlags,
Packit Service 5a9772
	                            LPDWORD pdwType, PVOID pvData, LPDWORD pcbData);
Packit 1fb8d4
Packit 1fb8d4
#ifdef UNICODE
Packit 1fb8d4
#define RegGetValue RegGetValueW
Packit 1fb8d4
#else
Packit 1fb8d4
#define RegGetValue RegGetValueA
Packit 1fb8d4
#endif
Packit 1fb8d4
Packit Service 5a9772
	WINPR_API LONG RegLoadAppKeyW(LPCWSTR lpFile, PHKEY phkResult, REGSAM samDesired,
Packit Service 5a9772
	                              DWORD dwOptions, DWORD Reserved);
Packit Service 5a9772
	WINPR_API LONG RegLoadAppKeyA(LPCSTR lpFile, PHKEY phkResult, REGSAM samDesired,
Packit Service 5a9772
	                              DWORD dwOptions, DWORD Reserved);
Packit 1fb8d4
Packit 1fb8d4
#ifdef UNICODE
Packit 1fb8d4
#define RegLoadAppKey RegLoadAppKeyW
Packit 1fb8d4
#else
Packit 1fb8d4
#define RegLoadAppKey RegLoadAppKeyA
Packit 1fb8d4
#endif
Packit 1fb8d4
Packit Service 5a9772
	WINPR_API LONG RegLoadKeyW(HKEY hKey, LPCWSTR lpSubKey, LPCWSTR lpFile);
Packit Service 5a9772
	WINPR_API LONG RegLoadKeyA(HKEY hKey, LPCSTR lpSubKey, LPCSTR lpFile);
Packit 1fb8d4
Packit 1fb8d4
#ifdef UNICODE
Packit 1fb8d4
#define RegLoadKey RegLoadKeyW
Packit 1fb8d4
#else
Packit 1fb8d4
#define RegLoadKey RegLoadKeyA
Packit 1fb8d4
#endif
Packit 1fb8d4
Packit Service 5a9772
	WINPR_API LONG RegLoadMUIStringW(HKEY hKey, LPCWSTR pszValue, LPWSTR pszOutBuf, DWORD cbOutBuf,
Packit Service 5a9772
	                                 LPDWORD pcbData, DWORD Flags, LPCWSTR pszDirectory);
Packit Service 5a9772
	WINPR_API LONG RegLoadMUIStringA(HKEY hKey, LPCSTR pszValue, LPSTR pszOutBuf, DWORD cbOutBuf,
Packit Service 5a9772
	                                 LPDWORD pcbData, DWORD Flags, LPCSTR pszDirectory);
Packit 1fb8d4
Packit 1fb8d4
#ifdef UNICODE
Packit 1fb8d4
#define RegLoadMUIString RegLoadMUIStringW
Packit 1fb8d4
#else
Packit 1fb8d4
#define RegLoadMUIString RegLoadMUIStringA
Packit 1fb8d4
#endif
Packit 1fb8d4
Packit Service 5a9772
	WINPR_API LONG RegNotifyChangeKeyValue(HKEY hKey, BOOL bWatchSubtree, DWORD dwNotifyFilter,
Packit Service 5a9772
	                                       HANDLE hEvent, BOOL fAsynchronous);
Packit 1fb8d4
Packit Service 5a9772
	WINPR_API LONG RegOpenCurrentUser(REGSAM samDesired, PHKEY phkResult);
Packit 1fb8d4
Packit Service 5a9772
	WINPR_API LONG RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired,
Packit Service 5a9772
	                             PHKEY phkResult);
Packit Service 5a9772
	WINPR_API LONG RegOpenKeyExA(HKEY hKey, LPCSTR lpSubKey, DWORD ulOptions, REGSAM samDesired,
Packit Service 5a9772
	                             PHKEY phkResult);
Packit 1fb8d4
Packit 1fb8d4
#ifdef UNICODE
Packit 1fb8d4
#define RegOpenKeyEx RegOpenKeyExW
Packit 1fb8d4
#else
Packit 1fb8d4
#define RegOpenKeyEx RegOpenKeyExA
Packit 1fb8d4
#endif
Packit 1fb8d4
Packit Service 5a9772
	WINPR_API LONG RegOpenUserClassesRoot(HANDLE hToken, DWORD dwOptions, REGSAM samDesired,
Packit Service 5a9772
	                                      PHKEY phkResult);
Packit 1fb8d4
Packit Service 5a9772
	WINPR_API LONG RegQueryInfoKeyW(HKEY hKey, LPWSTR lpClass, LPDWORD lpcClass, LPDWORD lpReserved,
Packit Service 5a9772
	                                LPDWORD lpcSubKeys, LPDWORD lpcMaxSubKeyLen,
Packit Service 5a9772
	                                LPDWORD lpcMaxClassLen, LPDWORD lpcValues,
Packit Service 5a9772
	                                LPDWORD lpcMaxValueNameLen, LPDWORD lpcMaxValueLen,
Packit Service 5a9772
	                                LPDWORD lpcbSecurityDescriptor, PFILETIME lpftLastWriteTime);
Packit Service 5a9772
	WINPR_API LONG RegQueryInfoKeyA(HKEY hKey, LPSTR lpClass, LPDWORD lpcClass, LPDWORD lpReserved,
Packit Service 5a9772
	                                LPDWORD lpcSubKeys, LPDWORD lpcMaxSubKeyLen,
Packit Service 5a9772
	                                LPDWORD lpcMaxClassLen, LPDWORD lpcValues,
Packit Service 5a9772
	                                LPDWORD lpcMaxValueNameLen, LPDWORD lpcMaxValueLen,
Packit Service 5a9772
	                                LPDWORD lpcbSecurityDescriptor, PFILETIME lpftLastWriteTime);
Packit 1fb8d4
Packit 1fb8d4
#ifdef UNICODE
Packit 1fb8d4
#define RegQueryInfoKey RegQueryInfoKeyW
Packit 1fb8d4
#else
Packit 1fb8d4
#define RegQueryInfoKey RegQueryInfoKeyA
Packit 1fb8d4
#endif
Packit 1fb8d4
Packit Service 5a9772
	WINPR_API LONG RegQueryValueExW(HKEY hKey, LPCWSTR lpValueName, LPDWORD lpReserved,
Packit Service 5a9772
	                                LPDWORD lpType, LPBYTE lpData, LPDWORD lpcbData);
Packit Service 5a9772
	WINPR_API LONG RegQueryValueExA(HKEY hKey, LPCSTR lpValueName, LPDWORD lpReserved,
Packit Service 5a9772
	                                LPDWORD lpType, LPBYTE lpData, LPDWORD lpcbData);
Packit 1fb8d4
Packit 1fb8d4
#ifdef UNICODE
Packit 1fb8d4
#define RegQueryValueEx RegQueryValueExW
Packit 1fb8d4
#else
Packit 1fb8d4
#define RegQueryValueEx RegQueryValueExA
Packit 1fb8d4
#endif
Packit 1fb8d4
Packit Service 5a9772
	WINPR_API LONG RegRestoreKeyW(HKEY hKey, LPCWSTR lpFile, DWORD dwFlags);
Packit Service 5a9772
	WINPR_API LONG RegRestoreKeyA(HKEY hKey, LPCSTR lpFile, DWORD dwFlags);
Packit 1fb8d4
Packit 1fb8d4
#ifdef UNICODE
Packit 1fb8d4
#define RegRestoreKey RegRestoreKeyW
Packit 1fb8d4
#else
Packit 1fb8d4
#define RegRestoreKey RegRestoreKeyA
Packit 1fb8d4
#endif
Packit 1fb8d4
Packit Service 5a9772
	WINPR_API LONG RegSaveKeyExW(HKEY hKey, LPCWSTR lpFile,
Packit Service 5a9772
	                             LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD Flags);
Packit Service 5a9772
	WINPR_API LONG RegSaveKeyExA(HKEY hKey, LPCSTR lpFile,
Packit Service 5a9772
	                             LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD Flags);
Packit 1fb8d4
Packit 1fb8d4
#ifdef UNICODE
Packit 1fb8d4
#define RegSaveKeyEx RegSaveKeyExW
Packit 1fb8d4
#else
Packit 1fb8d4
#define RegSaveKeyEx RegSaveKeyExA
Packit 1fb8d4
#endif
Packit 1fb8d4
Packit Service 5a9772
	WINPR_API LONG RegSetKeySecurity(HKEY hKey, SECURITY_INFORMATION SecurityInformation,
Packit Service 5a9772
	                                 PSECURITY_DESCRIPTOR pSecurityDescriptor);
Packit 1fb8d4
Packit Service 5a9772
	WINPR_API LONG RegSetValueExW(HKEY hKey, LPCWSTR lpValueName, DWORD Reserved, DWORD dwType,
Packit Service 5a9772
	                              const BYTE* lpData, DWORD cbData);
Packit Service 5a9772
	WINPR_API LONG RegSetValueExA(HKEY hKey, LPCSTR lpValueName, DWORD Reserved, DWORD dwType,
Packit Service 5a9772
	                              const BYTE* lpData, DWORD cbData);
Packit 1fb8d4
Packit 1fb8d4
#ifdef UNICODE
Packit 1fb8d4
#define RegSetValueEx RegSetValueExW
Packit 1fb8d4
#else
Packit 1fb8d4
#define RegSetValueEx RegSetValueExA
Packit 1fb8d4
#endif
Packit 1fb8d4
Packit Service 5a9772
	WINPR_API LONG RegUnLoadKeyW(HKEY hKey, LPCWSTR lpSubKey);
Packit Service 5a9772
	WINPR_API LONG RegUnLoadKeyA(HKEY hKey, LPCSTR lpSubKey);
Packit 1fb8d4
Packit 1fb8d4
#ifdef UNICODE
Packit 1fb8d4
#define RegUnLoadKey RegUnLoadKeyW
Packit 1fb8d4
#else
Packit 1fb8d4
#define RegUnLoadKey RegUnLoadKeyA
Packit 1fb8d4
#endif
Packit 1fb8d4
Packit 1fb8d4
#ifdef __cplusplus
Packit 1fb8d4
}
Packit 1fb8d4
#endif
Packit 1fb8d4
Packit 1fb8d4
#endif
Packit 1fb8d4
Packit 1fb8d4
#endif /* WINPR_REGISTRY_H */