mexhard.c
来自「MATLAB扩展编程by 孙永康.ZIP.有需要的朋友请来下载.」· C语言 代码 · 共 75 行
C
75 行
// 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 + =
减小字号Ctrl + -
显示快捷键?