/*++ Copyright (c) 1998-1999 Microsoft Corporation Module Name: wx86ofl.h Abstract: Wx86 On-The-Fly declarations/definitions. Revision History: 06-Jun-1998 CBiks Created --*/ #ifndef WX86OFL_INCLUDED #define WX86OFL_INCLUDED #if _MSC_VER > 1000 #pragma once #endif #ifdef WX86 #include #ifdef __cplusplus extern "C" { #endif // Each successful call to Wx86Load must be matched with a call to // Wx86Unload() BOOL Wx86Load(); void Wx86Unload(); // The following functions require wx86.dll to have been loaded UINT Wx86Callback(PROC pfnCallBack, HWND hwnd, UINT uMsg, LPARAM lParam); PVOID Wx86ThunkProc(PVOID pvAddress, PVOID pvCBDispatch, BOOL fNativeToX86 ); PVOID Wx86DualThunkProc(PVOID pvAddress, PVOID pvCBDispatch, BOOL fNativeToX86 ); ULONG Wx86EmulateX86(PVOID pvAddress, ULONG nParameters, PULONG Parameters); ULONGLONG Wx86EmulateX86GetQWord(PVOID pvAddress, ULONG nParameters, PULONG Parameters); IUnknown* Wx86ThunkInterface(IUnknown *punk, IID *piid, BOOLEAN fOutParameter, BOOLEAN fNativeToX86); void Wx86CheckFreeTempProxy(IUnknown *punk); IUnknown* Wx86ResolveProxy(IUnknown *punk, BOOLEAN fNativeToX86); HRESULT Wx86DllGetClassObjectThunk(IID *piid, LPVOID *ppv, HRESULT hr, BOOLEAN fNativetoX86); ULONG Wx86ProxyAddRef(IUnknown* punk); ULONG Wx86ProxyRelease(IUnknown* punk); // Wx86LoadX86Dll is retained for backward compatibility HMODULE Wx86LoadX86Dll(LPCWSTR lpLibFileName, DWORD dwFlags); BOOL Wx86FreeX86Dll(HMODULE hMod); // Wx86LoadX86Library is ifdef'd for UNICODE and non-UNICODE. This has been // added for compatibility with other Win32 functions as well as the functions // below. We cannot reuse the name Wx86LoadX86Dll because it is already defined // in wx86dll.h and will require cleaning up the code of all apps that use that // function // // At some point, this should be cleaned up and wx86dll.h should be eliminated. // A clean build will be required then. HMODULE Wx86LoadX86LibraryA(LPCSTR lpLibFileName, DWORD dwFlags); #define Wx86LoadX86LibraryW Wx86LoadX86Dll #ifdef UNICODE #define Wx86LoadX86Library Wx86LoadX86LibraryW #else #define Wx86LoadX86Library Wx86LoadX86LibraryA #endif // !UNICODE #define Wx86FreeX86Library Wx86FreeX86Dll // // The following functions do not require wx86.dll to be loaded // // // GetModuleHandle returns 0 if a native apps calls it with an x86 dll name. // This function will return the x86 dll's module handle. HMODULE Wx86GetX86ModuleHandleA(LPCSTR szDll); HMODULE Wx86GetX86ModuleHandleW(LPCWSTR szDll); #ifdef UNICODE #define Wx86GetX86ModuleHandle Wx86GetX86ModuleHandleW #else #define Wx86GetX86ModuleHandle Wx86GetX86ModuleHandleA #endif // !UNICODE UINT Wx86GetX86SystemDirectoryA(LPSTR lpBuffer, UINT nSize); UINT Wx86GetX86SystemDirectoryW(LPWSTR lpBuffer, UINT nSize); #ifdef UNICODE #define Wx86GetX86SystemDirectory Wx86GetX86SystemDirectoryW #else #define Wx86GetX86SystemDirectory Wx86GetX86SystemDirectoryA #endif // !UNICODE BOOL Wx86SuppressHardErrors(BOOL bSuppressHardErrors); BOOL Wx86IsCallThunked(VOID); BOOL Wx86UseKnownWx86Dll(BOOL bUseKnownWx86Dll); // // Helper functions for Wx86 plugin providers // typedef BOOLEAN (*WX86ENUMEXPORTCALLBACK)( PVOID DllBase, // same as DllBase above PVOID Context, // same as Context above PCHAR ExportName, // Name of Export (NULL if noname) ULONG Ordinal // Ordinal of Export ); BOOL Wx86EnumExports( IN PVOID DllBase, IN PVOID Context, IN WX86ENUMEXPORTCALLBACK CallBackRtn ); // // Registry thunking APIs // LONG Wx86RegCreateKeyA( HKEY hKey, LPCSTR lpSubKey, PHKEY phkResult ); LONG Wx86RegCreateKeyW( HKEY hKey, LPCWSTR lpSubKey, PHKEY phkResult ); LONG Wx86RegCreateKeyExA( HKEY hKey, LPCSTR lpSubKey, DWORD Reserved, LPSTR lpClass, DWORD dwOptions, REGSAM samDesired, LPSECURITY_ATTRIBUTES lpSecurityAttributes, PHKEY phkResult, LPDWORD lpdwDisposition ); LONG Wx86RegCreateKeyExW( HKEY hKey, LPCWSTR lpSubKey, DWORD Reserved, LPWSTR lpClass, DWORD dwOptions, REGSAM samDesired, LPSECURITY_ATTRIBUTES lpSecurityAttributes, PHKEY phkResult, LPDWORD lpdwDisposition ); LONG Wx86RegDeleteKeyA( HKEY hKey, LPCSTR lpKeyName ); LONG Wx86RegDeleteKeyW( HKEY hKey, LPCWSTR lpKeyName ); LONG Wx86RegEnumKeyA( HKEY hKey, DWORD dwIndex, LPSTR lpName, DWORD cbName ); LONG Wx86RegEnumKeyW( HKEY hKey, DWORD dwIndex, LPWSTR lpName, DWORD cbName ); LONG Wx86RegEnumKeyExA( HKEY hKey, DWORD dwIndex, LPSTR lpName, LPDWORD lpcbName, LPDWORD lpReserved, LPSTR lpClass, LPDWORD lpcbClass, PFILETIME lpftLastWriteTime ); LONG Wx86RegEnumKeyExW( HKEY hKey, DWORD dwIndex, LPWSTR lpName, LPDWORD lpcbName, LPDWORD lpReserved, LPWSTR lpClass, LPDWORD lpcbClass, PFILETIME lpftLastWriteTime ); LONG Wx86RegOpenKeyA( HKEY hKey, LPCSTR lpSubKey, PHKEY phkResult ); LONG Wx86RegOpenKeyW( HKEY hKey, LPCWSTR lpSubKey, PHKEY phkResult ); LONG Wx86RegOpenKeyExA( HKEY hKey, LPCSTR lpSubKey, DWORD dwOptions, REGSAM samDesired, PHKEY phkResult ); LONG Wx86RegOpenKeyExW( HKEY hKey, LPCWSTR lpSubKey, DWORD dwOptions, REGSAM samDesired, PHKEY phkResult ); LONG Wx86RegQueryValueA( HKEY hKey, LPCSTR lpSubKey, LPSTR lpData, PLONG lpcbData ); LONG Wx86RegQueryValueW( HKEY hKey, LPCWSTR lpSubKey, LPWSTR lpData, PLONG lpcbData ); LONG Wx86RegQueryValueExA( HKEY hKey, LPCSTR lpValueName, LPDWORD lpReserved, LPDWORD lpdwType, LPBYTE lpData, LPDWORD lpcbData ); LONG Wx86RegQueryValueExW( HKEY hKey, LPCWSTR lpValueName, LPDWORD lpReserved, LPDWORD lpdwType, LPBYTE lpData, LPDWORD lpcbData ); LONG Wx86RegSetValueA( HKEY hKey, LPCSTR lpSubKey, DWORD dwType, LPCSTR lpData, DWORD cbData ); LONG Wx86RegSetValueW( HKEY hKey, LPCWSTR lpSubKey, DWORD dwType, LPCWSTR lpData, DWORD cbData ); LONG Wx86RegSetValueExA( HKEY hKey, LPCSTR lpValueName, DWORD Reserved, DWORD dwType, CONST BYTE* lpData, DWORD cbData ); LONG Wx86RegSetValueExW( HKEY hKey, LPCWSTR lpValueName, DWORD Reserved, DWORD dwType, CONST BYTE* lpData, DWORD cbData ); LONG Wx86RegDeleteValueA( HKEY hKey, LPCSTR lpValueName ); LONG Wx86RegDeleteValueW( HKEY hKey, LPCWSTR lpValueName ); LONG Wx86RegEnumValueA( HKEY hKey, DWORD dwIndex, LPSTR lpValueName, LPDWORD lpcbValueName, LPDWORD lpReserved, LPDWORD lpType, LPBYTE lpData, LPDWORD lpcbData ); LONG Wx86RegEnumValueW( HKEY hKey, DWORD dwIndex, LPWSTR lpValueName, LPDWORD lpcbValueName, LPDWORD lpReserved, LPDWORD lpType, LPBYTE lpData, LPDWORD lpcbData ); LONG Wx86RegQueryMultipleValuesA( HKEY hKey, PVALENTA val_list, DWORD num_vals, LPSTR lpValueBuf, LPDWORD ldwTotsize ); LONG Wx86RegQueryMultipleValuesW( HKEY hKey, PVALENTW val_list, DWORD num_vals, LPWSTR lpValueBuf, LPDWORD ldwTotsize ); LONG Wx86RegCloseKey( HKEY hKey ); #if defined(UNICODE) #define Wx86RegCreateKey Wx86RegCreateKeyA #define Wx86RegCreateKeyEx Wx86RegCreateKeyExA #define Wx86RegDeleteKey Wx86RegDeleteKeyA #define Wx86RegEnumKey Wx86RegEnumKeyA #define Wx86RegEnumKeyEx Wx86RegEnumKeyExA #define Wx86RegOpenKey Wx86RegOpenKeyA #define Wx86RegOpenKeyEx Wx86RegOpenKeyExA #define Wx86RegQueryValue Wx86RegQueryValueA #define Wx86RegQueryValueEx Wx86RegQueryValueExA #define Wx86RegSetValue Wx86RegSetValueA #define Wx86RegSetValueEx Wx86RegSetValueExA #define Wx86RegDeleteValue Wx86RegDeleteValueA #define Wx86RegEnumValue Wx86RegEnumValueA #define Wx86RegQueryMultipleValues Wx86RegQueryMultipleValuesA #else #define Wx86RegCreateKey Wx86RegCreateKeyW #define Wx86RegCreateKeyEx Wx86RegCreateKeyExW #define Wx86RegDeleteKey Wx86RegDeleteKeyW #define Wx86RegEnumKey Wx86RegEnumKeyW #define Wx86RegEnumKeyEx Wx86RegEnumKeyExW #define Wx86RegOpenKey Wx86RegOpenKeyW #define Wx86RegOpenKeyEx Wx86RegOpenKeyExW #define Wx86RegQueryValue Wx86RegQueryValueW #define Wx86RegQueryValueEx Wx86RegQueryValueExW #define Wx86RegSetValue Wx86RegSetValueW #define Wx86RegSetValueEx Wx86RegSetValueExW #define Wx86RegDeleteValue Wx86RegDeleteValueW #define Wx86RegEnumValue Wx86RegEnumValueW #define Wx86RegQueryMultipleValues Wx86RegQueryMultipleValuesW #endif #ifdef __cplusplus }; #endif #endif // WX86 #endif // WX86OFL_INCLUDED