Blame winpr/include/winpr/registry.h

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