📄 mexhard.c
字号:
// MEXHARD.c - main module for VxD MEXHARD
#define DEVICE_MAIN
#include "mexhard.h"
#undef DEVICE_MAIN
#define MEXHARD_INP CTL_CODE(FILE_DEVICE_UNKNOWN, 1, METHOD_NEITHER, FILE_ANY_ACCESS)
#define MEXHARD_OUTP CTL_CODE(FILE_DEVICE_UNKNOWN, 2, METHOD_NEITHER, FILE_ANY_ACCESS)
Declare_Virtual_Device(MEXHARD)
DefineControlHandler(SYS_DYNAMIC_DEVICE_INIT, OnSysDynamicDeviceInit);
DefineControlHandler(SYS_DYNAMIC_DEVICE_EXIT, OnSysDynamicDeviceExit);
DefineControlHandler(W32_DEVICEIOCONTROL, OnW32Deviceiocontrol);
BOOL __cdecl ControlDispatcher(
DWORD dwControlMessage,
DWORD EBX,
DWORD EDX,
DWORD ESI,
DWORD EDI,
DWORD ECX)
{
START_CONTROL_DISPATCH
ON_SYS_DYNAMIC_DEVICE_INIT(OnSysDynamicDeviceInit);
ON_SYS_DYNAMIC_DEVICE_EXIT(OnSysDynamicDeviceExit);
ON_W32_DEVICEIOCONTROL(OnW32Deviceiocontrol);
END_CONTROL_DISPATCH
return TRUE;
}
BOOL OnSysDynamicDeviceInit()
{
return TRUE;
}
BOOL OnSysDynamicDeviceExit()
{
return TRUE;
}
DWORD OnW32Deviceiocontrol(PIOCTLPARAMS p)
{
unsigned short *ptri, *ptro;
switch (p->dioc_IOCtlCode)
{
case DIOC_OPEN:
case DIOC_CLOSEHANDLE:
break;
case MEXHARD_INP:
ptri = (unsigned short*)(p->dioc_InBuf);
ptro = (unsigned short*)(p->dioc_OutBuf);
*ptro = _inp(*ptri);
*p->dioc_bytesret = sizeof(unsigned short);
break;
case MEXHARD_OUTP:
ptri = (unsigned short*)(p->dioc_InBuf);
_outp(ptri[0], ptri[1]);
*p->dioc_bytesret = 0;
break;
default:
return ERROR_INVALID_FUNCTION;
}
return DEVIOCTL_NOERROR;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -