📄 cmosram.cpp
字号:
// CMOSRAM.cpp - main module for VxD CMOSRAM
#define DEVICE_MAIN
#include "cmosram.h"
Declare_Virtual_Device(CMOSRAM)
#undef DEVICE_MAIN
#include "apcx.h"
PortOption* PortOpn;
MyPort *p70,*p71;
PVOID CallBackApc = 0;
THREADHANDLE TheThread = 0;
int i=0;
DWORD CmosramDevice::OnW32DeviceIoControl(PIOCTLPARAMS pDIOCParams)
{
switch (pDIOCParams->dioc_IOCtlCode)
{
case DIOC_OPEN:
PortOpn = new PortOption[256];
p70 = new MyPort(0x70);
p71 = new MyPort(0x71);
if (!p70->hook() || !p71->hook()) return -1;
else return 0;
case DIOC_CLOSEHANDLE:
if (p70) delete p70;
if (p71) delete p71;
return 0;
case ADDRESSPASS:
CallBackApc = pDIOCParams->dioc_InBuf;
TheThread = Get_Cur_Thread_Handle();
return 0;
default:
return -1;
}
}
DWORD MyPort::handler(VMHANDLE hVM,DWORD port,CLIENT_STRUCT*pRegs,
DWORD iotype,DWORD outdata)
{
DWORD data;
switch(iotype)
{
case BYTE_OUTPUT:
_outp(port,outdata);
PortOpn[i].io=0;
PortOpn[i].port=port;
PortOpn[i].data=outdata;
break;
case BYTE_INPUT:
data=_inp(port);
PortOpn[i].io=1;
PortOpn[i].port=port;
PortOpn[i].data=data;
break;
}
VWIN32_QueueUserApc(CallBackApc, (DWORD)&PortOpn[i], TheThread);
i++;
if (i==256) i=0;
return data;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -