Здравствуйте D_Danil, Вы писали:
DD>The value of ESP was not properly saved across a function call. This is usually a result of calling a function
DD>declared with one calling convertion with a function pointer declared with a different calling convention.
Ну, правильно. Ты вызываешь функцию как CALLBACK (он же __stdcall), а в dll объявил её просто так. Когда всё в одном exe такой проблемы нет.
Нужно сделать dll такой:
#include <Windows.h>
#include <conio.h>
void CALLBACK PortDOWN(unsigned short);
BOOL WINAPI DllMain( HANDLE hModule, DWORD dwReason, LPVOID lpReserved )
{
switch(dwReason)
{
case DLL_PROCESS_ATTACH:
break;
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
void CALLBACK PortDOWN(unsigned short port)
{
int databyte=0x00; // 0xFF
int reflex=_outp(port, databyte); //port 0x0378 или 0x378
}