You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
489 lines
25 KiB
489 lines
25 KiB
/*++ BUILD Version: 0001
|
|
*
|
|
* WOW v1.0
|
|
*
|
|
* Copyright (c) 2002, Microsoft Corporation
|
|
*
|
|
* dpmf_reg.h
|
|
* WOW32 Dynamic Patch Module to support Registry API family
|
|
* Definitions & macors to support calls into dpmfreg.dll
|
|
*
|
|
* History:
|
|
* Created 01-10-2002 by cmjones
|
|
--*/
|
|
|
|
#ifndef _DPMF_REGAPI_H_
|
|
#define _DPMF_REGAPI_H_
|
|
|
|
|
|
#define REGPFT (DPMFAMTBLS()[REG_FAM])
|
|
#define REG_SHIM(ord, typ) ((typ)((pFT)->pDpmShmTbls[ord]))
|
|
|
|
// The order of this list must be the same as the lists below
|
|
enum RegFam {DPM_REGCLOSEKEY=0, // Win 3.1 set
|
|
DPM_REGCREATEKEY,
|
|
DPM_REGDELETEKEY,
|
|
DPM_REGENUMKEY,
|
|
DPM_REGOPENKEY,
|
|
DPM_REGQUERYVALUE,
|
|
DPM_REGSETVALUE, // end Win 3.1 set
|
|
DPM_REGDELETEVALUE, // Win 9x API's we currently thunk
|
|
DPM_REGENUMVALUE,
|
|
DPM_REGFLUSHKEY,
|
|
DPM_REGLOADKEY,
|
|
DPM_REGQUERYVALUEEX,
|
|
DPM_REGSAVEKEY,
|
|
DPM_REGSETVALUEEX,
|
|
DPM_REGUNLOADKEY, // End Win 9x thunked set
|
|
DPM_REGCONNECTREGISTRY, // Remainder for Generic thunk support
|
|
DPM_REGCREATEKEYEX,
|
|
DPM_REGENUMKEYEX,
|
|
DPM_REGNOTIFYCHANGEKEYVALUE,
|
|
DPM_REGOPENKEYEX,
|
|
DPM_REGQUERYINFOKEY,
|
|
DPM_REGQUERYMULTIPLEVALUES,
|
|
DPM_REGREPLACEKEY,
|
|
DPM_REGCREATEKEYW,
|
|
DPM_REGDELETEKEYW,
|
|
DPM_REGENUMKEYW,
|
|
DPM_REGOPENKEYW,
|
|
DPM_REGQUERYVALUEW,
|
|
DPM_REGSETVALUEW,
|
|
DPM_REGDELETEVALUEW,
|
|
DPM_REGENUMVALUEW,
|
|
DPM_REGLOADKEYW,
|
|
DPM_REGQUERYVALUEEXW,
|
|
DPM_REGSAVEKEYW,
|
|
DPM_REGSETVALUEEXW,
|
|
DPM_REGUNLOADKEYW,
|
|
DPM_REGCONNECTREGISTRYW,
|
|
DPM_REGCREATEKEYEXW,
|
|
DPM_REGENUMKEYEXW,
|
|
DPM_REGOPENKEYEXW,
|
|
DPM_REGQUERYINFOKEYW,
|
|
DPM_REGQUERYMULTIPLEVALUESW,
|
|
DPM_REGREPLACEKEYW,
|
|
enum_reg_last};
|
|
|
|
|
|
|
|
// These types will catch misuse of parameters & ret types
|
|
typedef ULONG (*typdpmRegCloseKey)(HKEY);
|
|
typedef ULONG (*typdpmRegCreateKey)(HKEY, LPCSTR, PHKEY);
|
|
typedef ULONG (*typdpmRegDeleteKey)(HKEY, LPCSTR);
|
|
typedef ULONG (*typdpmRegEnumKey)(HKEY, DWORD, LPSTR, DWORD);
|
|
typedef ULONG (*typdpmRegOpenKey)(HKEY, LPCSTR, PHKEY);
|
|
typedef ULONG (*typdpmRegQueryValue)(HKEY, LPCSTR, LPSTR, PLONG);
|
|
typedef ULONG (*typdpmRegSetValue)(HKEY, LPCSTR, DWORD, LPCSTR, DWORD);
|
|
typedef ULONG (*typdpmRegDeleteValue)(HKEY, LPCSTR);
|
|
typedef ULONG (*typdpmRegEnumValue)(HKEY, DWORD, LPSTR, LPDWORD, LPDWORD, LPDWORD, LPBYTE, LPDWORD);
|
|
typedef ULONG (*typdpmRegFlushKey)(HKEY);
|
|
typedef ULONG (*typdpmRegLoadKey)(HKEY, LPCSTR, LPCSTR);
|
|
typedef ULONG (*typdpmRegQueryValueEx)(HKEY, LPCSTR, LPDWORD, LPDWORD, LPBYTE, LPDWORD);
|
|
typedef ULONG (*typdpmRegSaveKey)(HKEY, LPCSTR, LPSECURITY_ATTRIBUTES);
|
|
typedef ULONG (*typdpmRegSetValueEx)(HKEY, LPCSTR, DWORD, DWORD, CONST BYTE *, DWORD);
|
|
typedef ULONG (*typdpmRegUnLoadKey)(HKEY, LPCSTR);
|
|
typedef ULONG (*typdpmRegConnectRegistry)(LPCSTR, HKEY, PHKEY);
|
|
typedef ULONG (*typdpmRegCreateKeyEx)(HKEY, LPCSTR, DWORD, LPSTR, DWORD, REGSAM, LPSECURITY_ATTRIBUTES, PHKEY, LPDWORD);
|
|
typedef ULONG (*typdpmRegEnumKeyEx)(HKEY, DWORD, LPSTR, LPDWORD, LPDWORD, LPSTR, LPDWORD, PFILETIME);
|
|
typedef ULONG (*typdpmRegNotifyChangeKeyValue)(HKEY, BOOL, DWORD, HANDLE, BOOL);
|
|
typedef ULONG (*typdpmRegOpenKeyEx)(HKEY, LPCSTR, DWORD, REGSAM, PHKEY);
|
|
typedef ULONG (*typdpmRegQueryInfoKey)(HKEY, LPSTR, LPDWORD, LPDWORD, LPDWORD, LPDWORD, LPDWORD, LPDWORD, LPDWORD, LPDWORD, LPDWORD, PFILETIME);
|
|
typedef ULONG (*typdpmRegQueryMultipleValues)(HKEY, PVALENT, DWORD, LPSTR, LPDWORD);
|
|
typedef ULONG (*typdpmRegReplaceKey)(HKEY, LPCSTR, LPCSTR, LPCSTR);
|
|
typedef ULONG (*typdpmRegCreateKeyW)(HKEY, LPCWSTR, PHKEY);
|
|
typedef ULONG (*typdpmRegDeleteKeyW)(HKEY, LPCWSTR);
|
|
typedef ULONG (*typdpmRegEnumKeyW)(HKEY, DWORD, LPWSTR, DWORD);
|
|
typedef ULONG (*typdpmRegOpenKeyW)(HKEY, LPCWSTR, PHKEY);
|
|
typedef ULONG (*typdpmRegQueryValueW)(HKEY, LPCWSTR, LPWSTR, PLONG);
|
|
typedef ULONG (*typdpmRegSetValueW)(HKEY, LPCWSTR, DWORD, LPCWSTR, DWORD);
|
|
typedef ULONG (*typdpmRegDeleteValueW)(HKEY, LPCWSTR);
|
|
typedef ULONG (*typdpmRegEnumValueW)(HKEY, DWORD, LPWSTR, LPDWORD, LPDWORD, LPDWORD, LPBYTE, LPDWORD);
|
|
typedef ULONG (*typdpmRegLoadKeyW)(HKEY, LPCWSTR, LPCWSTR);
|
|
typedef ULONG (*typdpmRegQueryValueExW)(HKEY, LPCWSTR, LPDWORD, LPDWORD, LPBYTE, LPDWORD);
|
|
typedef ULONG (*typdpmRegSaveKeyW)(HKEY, LPCWSTR, LPSECURITY_ATTRIBUTES);
|
|
typedef ULONG (*typdpmRegSetValueExW)(HKEY, LPCWSTR, DWORD, DWORD, CONST BYTE *, DWORD);
|
|
typedef ULONG (*typdpmRegUnLoadKeyW)(HKEY, LPCWSTR);
|
|
typedef ULONG (*typdpmRegConnectRegistryW)(LPCWSTR, HKEY, PHKEY);
|
|
typedef ULONG (*typdpmRegCreateKeyExW)(HKEY, LPCWSTR, DWORD, LPWSTR, DWORD, REGSAM, LPSECURITY_ATTRIBUTES, PHKEY, LPDWORD);
|
|
typedef ULONG (*typdpmRegEnumKeyExW)(HKEY, DWORD, LPWSTR, LPDWORD, LPDWORD, LPWSTR, LPDWORD, PFILETIME);
|
|
typedef ULONG (*typdpmRegOpenKeyExW)(HKEY, LPCWSTR, DWORD, REGSAM, PHKEY);
|
|
typedef ULONG (*typdpmRegQueryInfoKeyW)(HKEY, LPWSTR, LPDWORD, LPDWORD, LPDWORD, LPDWORD, LPDWORD, LPDWORD, LPDWORD, LPDWORD, LPDWORD, PFILETIME);
|
|
typedef ULONG (*typdpmRegQueryMultipleValuesW)(HKEY, PVALENTW, DWORD, LPWSTR, LPDWORD);
|
|
typedef ULONG (*typdpmRegReplaceKeyW)(HKEY, LPCWSTR, LPCWSTR, LPCWSTR);
|
|
|
|
|
|
// Macros to dispatch API calls properly
|
|
#define DPM_RegCloseKey(a) \
|
|
((typdpmRegCloseKey)(REGPFT->pfn[DPM_REGCLOSEKEY]))(a)
|
|
|
|
#define DPM_RegCreateKey(a,b,c) \
|
|
((typdpmRegCreateKey)(REGPFT->pfn[DPM_REGCREATEKEY]))(a,b,c)
|
|
|
|
#define DPM_RegDeleteKey(a,b) \
|
|
((typdpmRegDeleteKey)(REGPFT->pfn[DPM_REGDELETEKEY]))(a,b)
|
|
|
|
#define DPM_RegEnumKey(a,b,c,d) \
|
|
((typdpmRegEnumKey)(REGPFT->pfn[DPM_REGENUMKEY]))(a,b,c,d)
|
|
|
|
#define DPM_RegOpenKey(a,b,c) \
|
|
((typdpmRegOpenKey)(REGPFT->pfn[DPM_REGOPENKEY]))(a,b,c)
|
|
|
|
#define DPM_RegQueryValue(a,b,c,d) \
|
|
((typdpmRegQueryValue)(REGPFT->pfn[DPM_REGQUERYVALUE]))(a,b,c,d)
|
|
|
|
#define DPM_RegSetValue(a,b,c,d,e) \
|
|
((typdpmRegSetValue)(REGPFT->pfn[DPM_REGSETVALUE]))(a,b,c,d,e)
|
|
|
|
#define DPM_RegDeleteValue(a,b) \
|
|
((typdpmRegDeleteValue)(REGPFT->pfn[DPM_REGDELETEVALUE]))(a,b)
|
|
|
|
#define DPM_RegEnumValue(a,b,c,d,e,f,g,h) \
|
|
((typdpmRegEnumValue)(REGPFT->pfn[DPM_REGENUMVALUE]))(a,b,c,d,e,f,g,h)
|
|
|
|
#define DPM_RegFlushKey(a) \
|
|
((typdpmRegFlushKey)(REGPFT->pfn[DPM_REGFLUSHKEY]))(a)
|
|
|
|
#define DPM_RegLoadKey(a,b,c) \
|
|
((typdpmRegLoadKey)(REGPFT->pfn[DPM_REGLOADKEY]))(a,b,c)
|
|
|
|
#define DPM_RegQueryValueEx(a,b,c,d,e,f) \
|
|
((typdpmRegQueryValueEx)(REGPFT->pfn[DPM_REGQUERYVALUEEX]))(a,b,c,d,e,f)
|
|
|
|
#define DPM_RegSaveKey(a,b,c) \
|
|
((typdpmRegSaveKey)(REGPFT->pfn[DPM_REGSAVEKEY]))(a,b,c)
|
|
|
|
#define DPM_RegSetValueEx(a,b,c,d,e,f) \
|
|
((typdpmRegSetValueEx)(REGPFT->pfn[DPM_REGSETVALUEEX]))(a,b,c,d,e,f)
|
|
|
|
#define DPM_RegUnLoadKey(a,b) \
|
|
((typdpmRegUnLoadKey)(REGPFT->pfn[DPM_REGUNLOADKEY]))(a,b)
|
|
|
|
#define DPM_RegConnectRegistry(a,b,c) \
|
|
((typdpmRegConnectRegistry)(REGPFT->pfn[DPM_REGCONNECTREGISTRY]))(a,b,c)
|
|
|
|
#define DPM_RegCreateKeyEx(a,b,c,d,e,f,g,h,i) \
|
|
((typdpmRegCreateKeyEx)(REGPFT->pfn[DPM_REGCREATEKEYEX]))(a,b,c,d,e,f,g,h,i)
|
|
|
|
#define DPM_RegEnumKeyEx(a,b,c,d,e,f,g,h) \
|
|
((typdpmRegEnumKeyEx)(REGPFT->pfn[DPM_REGENUMKEYEX]))(a,b,c,d,e,f,g,h)
|
|
|
|
#define DPM_RegNotifyChangeKeyValue(a,b,c,d,e) \
|
|
((typdpmRegNotifyChangeKeyValue)(REGPFT->pfn[DPM_REGNOTIFYCHANGEKEYVALUE]))(a,b,c,d,e)
|
|
|
|
#define DPM_RegOpenKeyEx(a,b,c,d,e) \
|
|
((typdpmRegOpenKeyEx)(REGPFT->pfn[DPM_REGOPENKEYEX]))(a,b,c,d,e)
|
|
|
|
#define DPM_RegQueryInfoKey(a,b,c,d,e,f,g,h,i,j,k,l) \
|
|
((typdpmRegQueryInfoKey)(REGPFT->pfn[DPM_REGQUERYINFOKEY]))(a,b,c,d,e,f,g,h,i,j,k,l)
|
|
|
|
#define DPM_RegQueryMultipleValues(a,b,c,d,e) \
|
|
((typdpmRegQueryMultipleValues)(REGPFT->pfn[DPM_REGQUERYMULTIPLEVALUES]))(a,b,c,d,e)
|
|
|
|
#define DPM_RegReplaceKey(a,b,c,d) \
|
|
((typdpmRegReplaceKey)(REGPFT->pfn[DPM_REGREPLACEKEY]))(a,b,c,d)
|
|
|
|
#define DPM_RegCreateKeyW(a,b,c) \
|
|
((typdpmRegCreateKeyW)(REGPFT->pfn[DPM_REGCREATEKEYW]))(a,b,c)
|
|
|
|
#define DPM_RegDeleteKeyW(a,b) \
|
|
((typdpmRegDeleteKeyW)(REGPFT->pfn[DPM_REGDELETEKEYW]))(a,b)
|
|
|
|
#define DPM_RegEnumKeyW(a,b,c,d) \
|
|
((typdpmRegEnumKeyW)(REGPFT->pfn[DPM_REGENUMKEYW]))(a,b,c,d)
|
|
|
|
#define DPM_RegOpenKeyW(a,b,c) \
|
|
((typdpmRegOpenKeyW)(REGPFT->pfn[DPM_REGOPENKEYW]))(a,b,c)
|
|
|
|
#define DPM_RegQueryValueW(a,b,c,d) \
|
|
((typdpmRegQueryValueW)(REGPFT->pfn[DPM_REGQUERYVALUEW]))(a,b,c,d)
|
|
|
|
#define DPM_RegSetValueW(a,b,c,d,e) \
|
|
((typdpmRegSetValueW)(REGPFT->pfn[DPM_REGSETVALUEW]))(a,b,c,d,e)
|
|
|
|
#define DPM_RegDeleteValueW(a,b) \
|
|
((typdpmRegDeleteValueW)(REGPFT->pfn[DPM_REGDELETEVALUEW]))(a,b)
|
|
|
|
#define DPM_RegEnumValueW(a,b,c,d,e,f,g,h) \
|
|
((typdpmRegEnumValueW)(REGPFT->pfn[DPM_REGENUMVALUEW]))(a,b,c,d,e,f,g,h)
|
|
|
|
#define DPM_RegLoadKeyW(a,b,c) \
|
|
((typdpmRegLoadKeyW)(REGPFT->pfn[DPM_REGLOADKEYW]))(a,b,c)
|
|
|
|
#define DPM_RegQueryValueExW(a,b,c,d,e,f) \
|
|
((typdpmRegQueryValueExW)(REGPFT->pfn[DPM_REGQUERYVALUEEXW]))(a,b,c,d,e,f)
|
|
|
|
#define DPM_RegSaveKeyW(a,b,c) \
|
|
((typdpmRegSaveKeyW)(REGPFT->pfn[DPM_REGSAVEKEYW]))(a,b,c)
|
|
|
|
#define DPM_RegSetValueExW(a,b,c,d,e,f) \
|
|
((typdpmRegSetValueExW)(REGPFT->pfn[DPM_REGSETVALUEEXW]))(a,b,c,d,e,f)
|
|
|
|
#define DPM_RegUnLoadKeyW(a,b) \
|
|
((typdpmRegUnLoadKeyW)(REGPFT->pfn[DPM_REGUNLOADKEYW]))(a,b)
|
|
|
|
#define DPM_RegConnectRegistryW(a,b,c) \
|
|
((typdpmRegConnectRegistryW)(REGPFT->pfn[DPM_REGCONNECTREGISTRYW]))(a,b,c)
|
|
|
|
#define DPM_RegCreateKeyExW(a,b,c,d,e,f,g,h,i) \
|
|
((typdpmRegCreateKeyExW)(REGPFT->pfn[DPM_REGCREATEKEYEXW]))(a,b,c,d,e,f,g,h,i)
|
|
|
|
#define DPM_RegEnumKeyExW(a,b,c,d,e,f,g,h) \
|
|
((typdpmRegEnumKeyExW)(REGPFT->pfn[DPM_REGENUMKEYEXW]))(a,b,c,d,e,f,g,h)
|
|
|
|
#define DPM_RegOpenKeyExW(a,b,c,d,e) \
|
|
((typdpmRegOpenKeyExW)(REGPFT->pfn[DPM_REGOPENKEYEXW]))(a,b,c,d,e)
|
|
|
|
#define DPM_RegQueryInfoKeyW(a,b,c,d,e,f,g,h,i,j,k,l) \
|
|
((typdpmRegQueryInfoKeyW)(REGPFT->pfn[DPM_REGQUERYINFOKEYW]))(a,b,c,d,e,f,g,h,i,j,k,l)
|
|
|
|
#define DPM_RegQueryMultipleValuesW(a,b,c,d,e) \
|
|
((typdpmRegQueryMultipleValuesW)(REGPFT->pfn[DPM_REGQUERYMULTIPLEVALUESW]))(a,b,c,d,e)
|
|
|
|
#define DPM_RegReplaceKeyW(a,b,c,d) \
|
|
((typdpmRegReplaceKeyW)(REGPFT->pfn[DPM_REGREPLACEKEYW]))(a,b,c,d)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Macros to dispatch Shimed API calls properly from the dpmfxxx.dll
|
|
#define SHM_RegCloseKey(a) \
|
|
(REG_SHIM(DPM_REGCLOSEKEY, \
|
|
typdpmRegCloseKey))(a)
|
|
#define SHM_RegCreateKey(a,b,c) \
|
|
(REG_SHIM(DPM_REGCREATEKEY, \
|
|
typdpmRegCreateKey))(a,b,c)
|
|
#define SHM_RegDeleteKey(a,b) \
|
|
(REG_SHIM(DPM_REGDELETEKEY, \
|
|
typdpmRegDeleteKey))(a,b)
|
|
#define SHM_RegEnumKey(a,b,c,d) \
|
|
(REG_SHIM(DPM_REGENUMKEY, \
|
|
typdpmRegEnumKey))(a,b,c,d)
|
|
#define SHM_RegOpenKey(a,b,c) \
|
|
(REG_SHIM(DPM_REGOPENKEY, \
|
|
typdpmRegOpenKey))(a,b,c)
|
|
#define SHM_RegQueryValue(a,b,c,d) \
|
|
(REG_SHIM(DPM_REGQUERYVALUE, \
|
|
typdpmRegQueryValue))(a,b,c,d)
|
|
#define SHM_RegSetValue(a,b,c,d,e) \
|
|
(REG_SHIM(DPM_REGSETVALUE, \
|
|
typdpmRegSetValue))(a,b,c,d,e)
|
|
#define SHM_RegDeleteValue(a,b) \
|
|
(REG_SHIM(DPM_REGDELETEVALUE, \
|
|
typdpmRegDeleteValue))(a,b)
|
|
#define SHM_RegEnumValue(a,b,c,d,e,f,g,h) \
|
|
(REG_SHIM(DPM_REGENUMVALUE, \
|
|
typdpmRegEnumValue))(a,b,c,d,e,f,g,h)
|
|
#define SHM_RegFlushKey(a) \
|
|
(REG_SHIM(DPM_REGFLUSHKEY, \
|
|
typdpmRegFlushKey))(a)
|
|
#define SHM_RegLoadKey(a,b,c) \
|
|
(REG_SHIM(DPM_REGLOADKEY, \
|
|
typdpmRegLoadKey))(a,b,c)
|
|
#define SHM_RegQueryValueEx(a,b,c,d,e,f) \
|
|
(REG_SHIM(DPM_REGQUERYVALUEEX, \
|
|
typdpmRegQueryValueEx))(a,b,c,d,e,f)
|
|
#define SHM_RegSaveKey(a,b,c) \
|
|
(REG_SHIM(DPM_REGSAVEKEY, \
|
|
typdpmRegSaveKey))(a,b,c)
|
|
#define SHM_RegSetValueEx(a,b,c,d,e,f) \
|
|
(REG_SHIM(DPM_REGSETVALUEEX, \
|
|
typdpmRegSetValueEx))(a,b,c,d,e,f)
|
|
#define SHM_RegUnLoadKey(a,b) \
|
|
(REG_SHIM(DPM_REGUNLOADKEY, \
|
|
typdpmRegUnLoadKey))(a,b)
|
|
#define SHM_RegConnectRegistry(a,b,c) \
|
|
(REG_SHIM(DPM_REGCONNECTREGISTRY, \
|
|
typdpmRegConnectRegistry))(a,b,c)
|
|
#define SHM_RegCreateKeyEx(a,b,c,d,e,f,g,h,i) \
|
|
(REG_SHIM(DPM_REGCREATEKEYEX, \
|
|
typdpmRegCreateKeyEx))(a,b,c,d,e,f,g,h,i)
|
|
#define SHM_RegEnumKeyEx(a,b,c,d,e,f,g,h) \
|
|
(REG_SHIM(DPM_REGENUMKEYEX, \
|
|
typdpmRegEnumKeyEx))(a,b,c,d,e,f,g,h)
|
|
#define SHM_RegNotifyChangeKeyValue(a,b,c,d,e) \
|
|
(REG_SHIM(DPM_REGNOTIFYCHANGEKEYVALUE, \
|
|
typdpmRegNotifyChangeKeyValue))(a,b,c,d,e)
|
|
#define SHM_RegOpenKeyEx(a,b,c,d,e) \
|
|
(REG_SHIM(DPM_REGOPENKEYEX, \
|
|
typdpmRegOpenKeyEx))(a,b,c,d,e)
|
|
#define SHM_RegQueryInfoKey(a,b,c,d,e,f,g,h,i,j,k,l) \
|
|
(REG_SHIM(DPM_REGQUERYINFOKEY, \
|
|
typdpmRegQueryInfoKey))(a,b,c,d,e,f,g,h,i,j,k,l)
|
|
#define SHM_RegQueryMultipleValues(a,b,c,d,e) \
|
|
(REG_SHIM(DPM_REGQUERYMULTIPLEVALUES, \
|
|
typdpmRegQueryMultipleValues))(a,b,c,d,e)
|
|
#define SHM_RegReplaceKey(a,b,c,d) \
|
|
(REG_SHIM(DPM_REGREPLACEKEY, \
|
|
typdpmRegReplaceKey))(a,b,c,d)
|
|
#define SHM_RegCreateKeyW(a,b,c) \
|
|
(REG_SHIM(DPM_REGCREATEKEYW, \
|
|
typdpmRegCreateKeyW))(a,b,c)
|
|
#define SHM_RegDeleteKeyW(a,b) \
|
|
(REG_SHIM(DPM_REGDELETEKEYW, \
|
|
typdpmRegDeleteKeyW))(a,b)
|
|
#define SHM_RegEnumKeyW(a,b,c,d) \
|
|
(REG_SHIM(DPM_REGENUMKEYW, \
|
|
typdpmRegEnumKeyW))(a,b,c,d)
|
|
#define SHM_RegOpenKeyW(a,b,c) \
|
|
(REG_SHIM(DPM_REGOPENKEYW, \
|
|
typdpmRegOpenKeyW))(a,b,c)
|
|
#define SHM_RegQueryValueW(a,b,c,d) \
|
|
(REG_SHIM(DPM_REGQUERYVALUEW, \
|
|
typdpmRegQueryValueW))(a,b,c,d)
|
|
#define SHM_RegSetValueW(a,b,c,d,e) \
|
|
(REG_SHIM(DPM_REGSETVALUEW, \
|
|
typdpmRegSetValueW))(a,b,c,d,e)
|
|
#define SHM_RegDeleteValueW(a,b) \
|
|
(REG_SHIM(DPM_REGDELETEVALUEW, \
|
|
typdpmRegDeleteValueW))(a,b)
|
|
#define SHM_RegEnumValueW(a,b,c,d,e,f,g,h) \
|
|
(REG_SHIM(DPM_REGENUMVALUEW, \
|
|
typdpmRegEnumValueW))(a,b,c,d,e,f,g,h)
|
|
#define SHM_RegLoadKeyW(a,b,c) \
|
|
(REG_SHIM(DPM_REGLOADKEYW, \
|
|
typdpmRegLoadKeyW))(a,b,c)
|
|
#define SHM_RegQueryValueExW(a,b,c,d,e,f) \
|
|
(REG_SHIM(DPM_REGQUERYVALUEEXW, \
|
|
typdpmRegQueryValueExW))(a,b,c,d,e,f)
|
|
#define SHM_RegSaveKeyW(a,b,c) \
|
|
(REG_SHIM(DPM_REGSAVEKEYW, \
|
|
typdpmRegSaveKeyW))(a,b,c)
|
|
#define SHM_RegSetValueExW(a,b,c,d,e,f) \
|
|
(REG_SHIM(DPM_REGSETVALUEEXW, \
|
|
typdpmRegSetValueExW))(a,b,c,d,e,f)
|
|
#define SHM_RegUnLoadKeyW(a,b) \
|
|
(REG_SHIM(DPM_REGUNLOADKEYW, \
|
|
typdpmRegUnLoadKeyW))(a,b)
|
|
#define SHM_RegConnectRegistryW(a,b,c) \
|
|
(REG_SHIM(DPM_REGCONNECTREGISTRYW, \
|
|
typdpmRegConnectRegistryW))(a,b,c)
|
|
#define SHM_RegCreateKeyExW(a,b,c,d,e,f,g,h,i) \
|
|
(REG_SHIM(DPM_REGCREATEKEYEXW, \
|
|
typdpmRegCreateKeyExW))(a,b,c,d,e,f,g,h,i)
|
|
#define SHM_RegEnumKeyExW(a,b,c,d,e,f,g,h) \
|
|
(REG_SHIM(DPM_REGENUMKEYEXW, \
|
|
typdpmRegEnumKeyExW))(a,b,c,d,e,f,g,h)
|
|
#define SHM_RegOpenKeyExW(a,b,c,d,e) \
|
|
(REG_SHIM(DPM_REGOPENKEYEXW, \
|
|
typdpmRegOpenKeyExW))(a,b,c,d,e)
|
|
#define SHM_RegQueryInfoKeyW(a,b,c,d,e,f,g,h,i,j,k,l) \
|
|
(REG_SHIM(DPM_REGQUERYINFOKEYW, \
|
|
typdpmRegQueryInfoKeyW))(a,b,c,d,e,f,g,h,i,j,k,l)
|
|
#define SHM_RegQueryMultipleValuesW(a,b,c,d,e) \
|
|
(REG_SHIM(DPM_REGQUERYMULTIPLEVALUESW, \
|
|
typdpmRegQueryMultipleValuesW))(a,b,c,d,e)
|
|
#define SHM_RegReplaceKeyW(a,b,c,d) \
|
|
(REG_SHIM(DPM_REGREPLACEKEYW, \
|
|
typdpmRegReplaceKeyW))(a,b,c,d)
|
|
|
|
#endif // _DPMF_REGAPI_H_
|
|
|
|
|
|
|
|
|
|
// These need to be in the same order as the RegFam enum definitions above and
|
|
// the DpmRegTbl[] list below.
|
|
// This instantiates memory for DpmRegStrs[] in mvdm\wow32\wdpm.c
|
|
#ifdef _WDPM_C_
|
|
const char *DpmRegStrs[] = {"RegCloseKey",
|
|
"RegCreateKeyA",
|
|
"RegDeleteKeyA",
|
|
"RegEnumKeyA",
|
|
"RegOpenKeyA",
|
|
"RegQueryValueA",
|
|
"RegSetValueA",
|
|
"RegDeleteValueA",
|
|
"RegEnumValueA",
|
|
"RegFlushKey",
|
|
"RegLoadKeyA",
|
|
"RegQueryValueExA",
|
|
"RegSaveKeyA",
|
|
"RegSetValueExA",
|
|
"RegUnLoadKeyA",
|
|
"RegConnectRegistryA",
|
|
"RegCreateKeyExA",
|
|
"RegEnumKeyExA",
|
|
"RegNotifyChangeKeyValue",
|
|
"RegOpenKeyExA",
|
|
"RegQueryInfoKeyA",
|
|
"RegQueryMultipleValuesA",
|
|
"RegReplaceKeyA",
|
|
"RegCreateKeyW",
|
|
"RegDeleteKeyW",
|
|
"RegEnumKeyW",
|
|
"RegOpenKeyW",
|
|
"RegQueryValueW",
|
|
"RegSetValueW",
|
|
"RegDeleteValueW",
|
|
"RegEnumValueW",
|
|
"RegLoadKeyW",
|
|
"RegQueryValueExW",
|
|
"RegSaveKeyW",
|
|
"RegSetValueExW",
|
|
"RegUnLoadKeyW",
|
|
"RegConnectRegistryW",
|
|
"RegCreateKeyExW",
|
|
"RegEnumKeyExW",
|
|
"RegOpenKeyExW",
|
|
"RegQueryInfoKeyW",
|
|
"RegQueryMultipleValuesW",
|
|
"RegReplaceKeyW"};
|
|
|
|
// These need to be in the same order as the RegFam enum definitions and the
|
|
// the DpmRegStrs[] list above.
|
|
// This instantiates memory for DpmRegTbl[] in mvdm\wow32\wdpm.c
|
|
PVOID DpmRegTbl[] = {RegCloseKey,
|
|
RegCreateKeyA,
|
|
RegDeleteKeyA,
|
|
RegEnumKeyA,
|
|
RegOpenKeyA,
|
|
RegQueryValueA,
|
|
RegSetValueA,
|
|
RegDeleteValueA,
|
|
RegEnumValueA,
|
|
RegFlushKey,
|
|
RegLoadKeyA,
|
|
RegQueryValueExA,
|
|
RegSaveKeyA,
|
|
RegSetValueExA,
|
|
RegUnLoadKeyA,
|
|
RegConnectRegistryA,
|
|
RegCreateKeyExA,
|
|
RegEnumKeyExA,
|
|
RegNotifyChangeKeyValue,
|
|
RegOpenKeyExA,
|
|
RegQueryInfoKeyA,
|
|
RegQueryMultipleValuesA,
|
|
RegReplaceKeyA,
|
|
RegCreateKeyW,
|
|
RegDeleteKeyW,
|
|
RegEnumKeyW,
|
|
RegOpenKeyW,
|
|
RegQueryValueW,
|
|
RegSetValueW,
|
|
RegDeleteValueW,
|
|
RegEnumValueW,
|
|
RegLoadKeyW,
|
|
RegQueryValueExW,
|
|
RegSaveKeyW,
|
|
RegSetValueExW,
|
|
RegUnLoadKeyW,
|
|
RegConnectRegistryW,
|
|
RegCreateKeyExW,
|
|
RegEnumKeyExW,
|
|
RegOpenKeyExW,
|
|
RegQueryInfoKeyW,
|
|
RegQueryMultipleValuesW,
|
|
RegReplaceKeyW};
|
|
|
|
#define NUM_HOOKED_REG_APIS ((sizeof DpmRegTbl)/(sizeof DpmRegTbl[0]))
|
|
|
|
// This instantiates memory for DpmRegFam in mvdm\wow32\wdpm.c
|
|
FAMILY_TABLE DpmRegFam = {NUM_HOOKED_REG_APIS, 0, 0, 0, 0, DpmRegTbl};
|
|
|
|
#endif // _WDPM_C_
|
|
|