⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mexhard.c

📁 MATLAB扩展编程by 孙永康.ZIP.有需要的朋友请来下载.
💻 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 + -