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

📄 inte.cpp

📁 这是一个打印机的端口控制的驱动编程
💻 CPP
字号:
// INTE.cpp - main module for VxD INTE

#define DEVICE_MAIN
#include "inte.h"
Declare_Virtual_Device(INTE)
#undef DEVICE_MAIN

//////////////////////////////////////////////
void OurInt::OnHardwareInt(VMHANDLE hVM)
{
	int port_value;
	_outp(PAR_PORT,_inp(PAR_PORT)+1);
	sendPhysicalEOI();
}
OurInt::OurInt():VHardwareInt(TestIrq,VPICD_OPT_CAN_SHARE,0,0)
{}
BOOL InteDevice::OnSysDynamicDeviceInit()
{
	pOurInt=new OurInt();
	if(pOurInt==NULL||(!pOurInt->hook()))
		return FALSE;
	pOurInt->physicalUnmask();
	_outp(PAR_PORT,0x0);
	return TRUE;
}
BOOL InteDevice::OnSysDynamicExit()
{
	pOurInt->unhook();
	pOurInt->physicalMask();
	delete pOurInt;
	return TRUE;
}
DWORD InteDevice::OnW32DeviceIoControl(PIOCTLPARAMS pDIOCParams)
{
	int *inx,*outx;
	inx=(int *)pDIOCParams->dioc_InBuf;
	outx=(int *)pDIOCParams->dioc_OutBuf;
	switch(pDIOCParams->dioc_IOCtlCode)
	{case DIOC_OPEN:break;
	case SHOW_INT_COUNTER:
		outx[0]=UCHAR(_inp(PAR_PORT));
		break;
		case INT_COUNTER_ADD:
		_outp(PAR_PORT,_inp(PAR_PORT)+inx[0]);
		break;
		case INT_COUNTER_SUB:
		_outp(PAR_PORT,_inp(PAR_PORT)-inx[0]);
		break;
		case INT_COUNTER_SET:
		_outp(PAR_PORT,inx[0]);
		break;
	}
	return 0;
}

InteVM::InteVM(VMHANDLE hVM) : VVirtualMachine(hVM) {}

InteThread::InteThread(THREADHANDLE hThread) : VThread(hThread) {}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -