У меня сбой при загрузке dsound.dll из другой библиотеки DLL в Windows 7. Сбой следующего кода:
#include <Windows.h>
#include <mmreg.h>
#include <dsound.h>
#include <assert.h>
HRESULT (WINAPI *pDirectSoundEnumerateA)(LPDSENUMCALLBACKA pDSEnumCallback, LPVOID pContext);
HMODULE hDsound;
BOOL CALLBACK DSEnum(LPGUID a, LPCSTR b, LPCSTR c, LPVOID d)
{
return TRUE;
}
void CrashTest()
{
HRESULT hr;
hDsound = LoadLibraryA("dsound.dll");
assert(hDsound);
*(void**)&pDirectSoundEnumerateA = (void*)GetProcAddress(hDsound, "DirectSoundEnumerateA");
assert(pDirectSoundEnumerateA);
hr = pDirectSoundEnumerateA(DSEnum, NULL);
assert(!FAILED(hr));
}
BOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved)
{
if (ul_reason_for_call == DLL_PROCESS_ATTACH)
{
DisableThreadLibraryCalls(hModule);
CrashTest();
}
}
с этим кодом ошибки:
Unhandled exception at ... in ...: 0xC0000005: Access violation reading location 0x00000044.
(по какой-то причине это всегда 0x44). Он работает в Windows XP или при загрузке непосредственно из .exe (не из отдельной DLL). Помогите!?! :)