Ich habe ein kleines Problem. Und zwar möchte ich aus verschiedenen Gründen eine DLL erstellen, die eine andere imitiert, also die gleichen Funktionen exportiert und die Aufrufe einfach nur weiterleitet. Das funktioniert soweit auch ganz gut und sieht etwa so aus:
Code: Alles auswählen
HMODULE hReal = 0;
void* LoadProc(const char* Function)
{
DWORD E = GetLastError();
if(!hReal)
{
wchar Buffer[1024];
SHGetSpecialFolderPath(0, Buffer, CSIDL_SYSTEM, false);
wcscat_s(Buffer, 1024, L"\\real_dll.dll");
hReal = LoadLibrary(Buffer);
}
void* r = GetProcAddress(hReal, Function);
SetLastError(E);
return r;
}
EXTERN_C HRESULT STDAPICALLTYPE
ExportedFunction(
UINT Param
)
{
typedef HRESULT (STDAPICALLTYPE* P)(
UINT Param
);
return P(LoadProc("ExportedFunction"))(Param);
}
Helmut