inte.cpp

来自「这是一个打印机的端口控制的驱动编程」· C++ 代码 · 共 60 行

CPP
60
字号
// 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 + =
减小字号Ctrl + -
显示快捷键?