From 27dffd5cc8b00b1db60d901ad77ec4f4c62630af Mon Sep 17 00:00:00 2001 From: dreguera Date: Thu, 30 Jul 2015 21:05:14 +0200 Subject: [PATCH] be explicit about __cdecl calling convention (for C# users etc.) --- src/wow64ext.cpp | 24 ++++++++++++------------ src/wow64ext.h | 24 ++++++++++++------------ 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/src/wow64ext.cpp b/src/wow64ext.cpp index 722b7dc..aa4886f 100644 --- a/src/wow64ext.cpp +++ b/src/wow64ext.cpp @@ -33,7 +33,7 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) #pragma warning(push) #pragma warning(disable : 4409) -extern "C" __declspec(dllexport) DWORD64 X64Call(DWORD64 func, int argC, ...) +extern "C" __declspec(dllexport) DWORD64 __cdecl X64Call(DWORD64 func, int argC, ...) { va_list args; va_start(args, argC); @@ -241,7 +241,7 @@ DWORD64 getTEB64() return reg.v; } -extern "C" __declspec(dllexport) DWORD64 GetModuleHandle64(wchar_t* lpModuleName) +extern "C" __declspec(dllexport) DWORD64 __cdecl GetModuleHandle64(wchar_t* lpModuleName) { TEB64 teb64; getMem64(&teb64, getTEB64(), sizeof(TEB64)); @@ -329,7 +329,7 @@ DWORD64 getLdrGetProcedureAddress() return 0; } -extern "C" __declspec(dllexport) VOID SetLastErrorFromX64Call(DWORD64 status) +extern "C" __declspec(dllexport) VOID __cdecl SetLastErrorFromX64Call(DWORD64 status) { typedef ULONG (WINAPI *RtlNtStatusToDosError_t)(NTSTATUS Status); typedef ULONG (WINAPI *RtlSetLastWin32Error_t)(NTSTATUS Status); @@ -350,7 +350,7 @@ extern "C" __declspec(dllexport) VOID SetLastErrorFromX64Call(DWORD64 status) } } -extern "C" __declspec(dllexport) DWORD64 GetProcAddress64(DWORD64 hModule, char* funcName) +extern "C" __declspec(dllexport) DWORD64 __cdecl GetProcAddress64(DWORD64 hModule, char* funcName) { static DWORD64 _LdrGetProcedureAddress = 0; if (0 == _LdrGetProcedureAddress) @@ -369,7 +369,7 @@ extern "C" __declspec(dllexport) DWORD64 GetProcAddress64(DWORD64 hModule, char* return funcRet; } -extern "C" __declspec(dllexport) SIZE_T VirtualQueryEx64(HANDLE hProcess, DWORD64 lpAddress, MEMORY_BASIC_INFORMATION64* lpBuffer, SIZE_T dwLength) +extern "C" __declspec(dllexport) SIZE_T __cdecl VirtualQueryEx64(HANDLE hProcess, DWORD64 lpAddress, MEMORY_BASIC_INFORMATION64* lpBuffer, SIZE_T dwLength) { static DWORD64 ntqvm = 0; if (0 == ntqvm) @@ -385,7 +385,7 @@ extern "C" __declspec(dllexport) SIZE_T VirtualQueryEx64(HANDLE hProcess, DWORD6 return (SIZE_T)ret; } -extern "C" __declspec(dllexport) DWORD64 VirtualAllocEx64(HANDLE hProcess, DWORD64 lpAddress, SIZE_T dwSize, DWORD flAllocationType, DWORD flProtect) +extern "C" __declspec(dllexport) DWORD64 __cdecl VirtualAllocEx64(HANDLE hProcess, DWORD64 lpAddress, SIZE_T dwSize, DWORD flAllocationType, DWORD flProtect) { static DWORD64 ntavm = 0; if (0 == ntavm) @@ -407,7 +407,7 @@ extern "C" __declspec(dllexport) DWORD64 VirtualAllocEx64(HANDLE hProcess, DWORD return tmpAddr; } -extern "C" __declspec(dllexport) BOOL VirtualFreeEx64(HANDLE hProcess, DWORD64 lpAddress, SIZE_T dwSize, DWORD dwFreeType) +extern "C" __declspec(dllexport) BOOL __cdecl VirtualFreeEx64(HANDLE hProcess, DWORD64 lpAddress, SIZE_T dwSize, DWORD dwFreeType) { static DWORD64 ntfvm = 0; if (0 == ntfvm) @@ -429,7 +429,7 @@ extern "C" __declspec(dllexport) BOOL VirtualFreeEx64(HANDLE hProcess, DWORD64 l return TRUE; } -extern "C" __declspec(dllexport) BOOL VirtualProtectEx64(HANDLE hProcess, DWORD64 lpAddress, SIZE_T dwSize, DWORD flNewProtect, DWORD* lpflOldProtect) +extern "C" __declspec(dllexport) BOOL __cdecl VirtualProtectEx64(HANDLE hProcess, DWORD64 lpAddress, SIZE_T dwSize, DWORD flNewProtect, DWORD* lpflOldProtect) { static DWORD64 ntpvm = 0; if (0 == ntpvm) @@ -451,7 +451,7 @@ extern "C" __declspec(dllexport) BOOL VirtualProtectEx64(HANDLE hProcess, DWORD6 return TRUE; } -extern "C" __declspec(dllexport) BOOL ReadProcessMemory64(HANDLE hProcess, DWORD64 lpBaseAddress, LPVOID lpBuffer, SIZE_T nSize, SIZE_T *lpNumberOfBytesRead) +extern "C" __declspec(dllexport) BOOL __cdecl ReadProcessMemory64(HANDLE hProcess, DWORD64 lpBaseAddress, LPVOID lpBuffer, SIZE_T nSize, SIZE_T *lpNumberOfBytesRead) { static DWORD64 nrvm = 0; if (0 == nrvm) @@ -475,7 +475,7 @@ extern "C" __declspec(dllexport) BOOL ReadProcessMemory64(HANDLE hProcess, DWORD } } -extern "C" __declspec(dllexport) BOOL WriteProcessMemory64(HANDLE hProcess, DWORD64 lpBaseAddress, LPVOID lpBuffer, SIZE_T nSize, SIZE_T *lpNumberOfBytesWritten) +extern "C" __declspec(dllexport) BOOL __cdecl WriteProcessMemory64(HANDLE hProcess, DWORD64 lpBaseAddress, LPVOID lpBuffer, SIZE_T nSize, SIZE_T *lpNumberOfBytesWritten) { static DWORD64 nrvm = 0; if (0 == nrvm) @@ -499,7 +499,7 @@ extern "C" __declspec(dllexport) BOOL WriteProcessMemory64(HANDLE hProcess, DWOR } } -extern "C" __declspec(dllexport) BOOL GetThreadContext64(HANDLE hThread, _CONTEXT64* lpContext) +extern "C" __declspec(dllexport) BOOL __cdecl GetThreadContext64(HANDLE hThread, _CONTEXT64* lpContext) { static DWORD64 gtc = 0; if (0 == gtc) @@ -518,7 +518,7 @@ extern "C" __declspec(dllexport) BOOL GetThreadContext64(HANDLE hThread, _CONTEX return TRUE; } -extern "C" __declspec(dllexport) BOOL SetThreadContext64(HANDLE hThread, _CONTEXT64* lpContext) +extern "C" __declspec(dllexport) BOOL __cdecl SetThreadContext64(HANDLE hThread, _CONTEXT64* lpContext) { static DWORD64 stc = 0; if (0 == stc) diff --git a/src/wow64ext.h b/src/wow64ext.h index ff6cb83..9fbc91d 100644 --- a/src/wow64ext.h +++ b/src/wow64ext.h @@ -359,16 +359,16 @@ struct _CONTEXT64 extern "C" { - __declspec(SPEC) DWORD64 X64Call(DWORD64 func, int argC, ...); - __declspec(SPEC) DWORD64 GetModuleHandle64(wchar_t* lpModuleName); - __declspec(SPEC) DWORD64 GetProcAddress64(DWORD64 hModule, char* funcName); - __declspec(SPEC) SIZE_T VirtualQueryEx64(HANDLE hProcess, DWORD64 lpAddress, MEMORY_BASIC_INFORMATION64* lpBuffer, SIZE_T dwLength); - __declspec(SPEC) DWORD64 VirtualAllocEx64(HANDLE hProcess, DWORD64 lpAddress, SIZE_T dwSize, DWORD flAllocationType, DWORD flProtect); - __declspec(SPEC) BOOL VirtualFreeEx64(HANDLE hProcess, DWORD64 lpAddress, SIZE_T dwSize, DWORD dwFreeType); - __declspec(SPEC) BOOL VirtualProtectEx64(HANDLE hProcess, DWORD64 lpAddress, SIZE_T dwSize, DWORD flNewProtect, DWORD* lpflOldProtect); - __declspec(SPEC) BOOL ReadProcessMemory64(HANDLE hProcess, DWORD64 lpBaseAddress, LPVOID lpBuffer, SIZE_T nSize, SIZE_T *lpNumberOfBytesRead); - __declspec(SPEC) BOOL WriteProcessMemory64(HANDLE hProcess, DWORD64 lpBaseAddress, LPVOID lpBuffer, SIZE_T nSize, SIZE_T *lpNumberOfBytesWritten); - __declspec(SPEC) BOOL GetThreadContext64(HANDLE hThread, _CONTEXT64* lpContext); - __declspec(SPEC) BOOL SetThreadContext64(HANDLE hThread, _CONTEXT64* lpContext); - __declspec(SPEC) VOID SetLastErrorFromX64Call(DWORD64 status); + __declspec(SPEC)DWORD64 __cdecl X64Call(DWORD64 func, int argC, ...); + __declspec(SPEC)DWORD64 __cdecl GetModuleHandle64(wchar_t* lpModuleName); + __declspec(SPEC)DWORD64 __cdecl GetProcAddress64(DWORD64 hModule, char* funcName); + __declspec(SPEC)SIZE_T __cdecl VirtualQueryEx64(HANDLE hProcess, DWORD64 lpAddress, MEMORY_BASIC_INFORMATION64* lpBuffer, SIZE_T dwLength); + __declspec(SPEC)DWORD64 __cdecl VirtualAllocEx64(HANDLE hProcess, DWORD64 lpAddress, SIZE_T dwSize, DWORD flAllocationType, DWORD flProtect); + __declspec(SPEC)BOOL __cdecl VirtualFreeEx64(HANDLE hProcess, DWORD64 lpAddress, SIZE_T dwSize, DWORD dwFreeType); + __declspec(SPEC)BOOL __cdecl VirtualProtectEx64(HANDLE hProcess, DWORD64 lpAddress, SIZE_T dwSize, DWORD flNewProtect, DWORD* lpflOldProtect); + __declspec(SPEC)BOOL __cdecl ReadProcessMemory64(HANDLE hProcess, DWORD64 lpBaseAddress, LPVOID lpBuffer, SIZE_T nSize, SIZE_T *lpNumberOfBytesRead); + __declspec(SPEC)BOOL __cdecl WriteProcessMemory64(HANDLE hProcess, DWORD64 lpBaseAddress, LPVOID lpBuffer, SIZE_T nSize, SIZE_T *lpNumberOfBytesWritten); + __declspec(SPEC)BOOL __cdecl GetThreadContext64(HANDLE hThread, _CONTEXT64* lpContext); + __declspec(SPEC)BOOL __cdecl SetThreadContext64(HANDLE hThread, _CONTEXT64* lpContext); + __declspec(SPEC)VOID __cdecl SetLastErrorFromX64Call(DWORD64 status); }