亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? pci2040.cpp

?? pci2040VxD驅動非常詳細的源程序
?? CPP
字號:
// PCI2040.cpp - main module for VxD PCI2040

#define DEVICE_MAIN
#include "pci2040.h"
Declare_Virtual_Device(PCI2040)
#undef DEVICE_MAIN

WORD ioport;
DWORD membase[2];///0 hpi csr base, 1 control space
BOOL  bVirIrq;
MyHwInt* pMyIRQ;
PVOID	    	CallBackApc = 0;
THREADHANDLE 	TheThread = 0;	
long int x;

#define PAGENUM(p)  (((ULONG)(p))>>12)//除以4k得多少頁
#define PAGEOFF(p)  (((ULONG)(p))&0xFFF)//偏移地址為低4k位
#define PAGEBASE(p)	 (((ULONG)(p))&~0xFFF)//基址為高位
#define _NPAGES_(p,k)  ((PAGENUM((char*)p+(k-1))-PAGENUM(p))+1)

///三個全局函數地址映射用
PVOID MapDevice(PVOID PhysAddress, DWORD SizeInBytes)
{
#ifdef USE_MAP_PHYS_TO_LINEAR
	return MapPhysToLinear(PhysAddress, SizeInBytes, 0);
#else
	PVOID Linear;
	ULONG nPages = _NPAGES_(PhysAddress, SizeInBytes);
	Linear = PageReserve(
		PR_SYSTEM,
		nPages,
		PR_FIXED
		);
	PageCommitPhys(
		PAGENUM(Linear),
		nPages,
		PAGENUM(PhysAddress),
		PC_INCR | PC_WRITEABLE | PC_USER
		);		
	LinPageLock(PAGENUM(Linear), nPages, 0);
	return (PVOID) ((ULONG)Linear+PAGEOFF(PhysAddress));
#endif
}

VOID UnmapDevice(PVOID LinearAddress, DWORD SizeInBytes)
{
#ifdef USE_MAP_PHYS_TO_LINEAR
	// cannot unmap
#else
	LinPageUnLock(
		PAGENUM(LinearAddress),
		_NPAGES_(LinearAddress, SizeInBytes),
		0
		);
	PageDecommit(
		PAGENUM(LinearAddress),
		_NPAGES_(LinearAddress, SizeInBytes),
		0
		);
	PageFree((MEMHANDLE)LinearAddress,0);
#endif
}

CONFIGRET OnConfigure(
	CONFIGFUNC cf, 		// function id
	SUBCONFIGFUNC scf,	// subfunction id
	DEVNODE devnode, 	// device node being configured
	DWORD refdata, 		// context information (function specific)
	ULONG flags			// function specific flags
)
{
	CMCONFIG config;
	LOG_CONF logconf;
	RES_DES hres;
	switch (cf)					// branch on function code
	{		
	case CONFIG_START:
		CONFIGMG_Get_Alloc_Log_Conf(&config, devnode, CM_GET_ALLOC_LOG_CONF_ALLOC);
		irq=config.bIRQRegisters[0];
//		irq=12;
		membase[0]=config.dMemBase[0];
		membase[1]=config.dMemBase[1];
		ioport=config.wIOPortBase[0];
		
		return CR_SUCCESS;

	case CONFIG_REMOVE /* 4 */:

	case CONFIG_STOP   /* 2 */:
		irq = 0xff;
		return CR_SUCCESS;

	default:
		return CR_DEFAULT;
	}			  
}				  

BOOL Pci2040Device::OnSysDynamicDeviceInit()
{

	return TRUE;
}

BOOL Pci2040Device::OnSysDynamicDeviceExit()
{
	return TRUE;
}

CONFIGRET Pci2040Device::OnPnpNewDevnode(DEVNODE devNode, DWORD loadType)
{
	switch(loadType)
	{
	case DLVXD_LOAD_DEVLOADER:
		return CONFIGMG_Register_Device_Driver(devNode,OnConfigure,
		0,CM_REGISTER_DEVICE_DRIVER_DISABLEABLE | CM_REGISTER_DEVICE_DRIVER_REMOVABLE);
	default:
		return CR_DEFAULT;
	}
	return CR_DEFAULT;
}

DWORD Pci2040Device::OnW32DeviceIoControl(PIOCTLPARAMS pDIOCParams)
{
	PMAPDEVREQUEST pReq;
	switch (pDIOCParams->dioc_IOCtlCode)
	{
	case DIOC_OPEN:
		dout<<"open"<<endl;
		x=0;
		if(irq!=0xff)
		{
			pMyIRQ=new MyHwInt();
			if(!pMyIRQ||!pMyIRQ->hook())
				bVirIrq=FALSE;
			else
			{
				bVirIrq=TRUE;
				pMyIRQ->physicalUnmask();
			}
		}
		break;

	case DIOC_CLOSEHANDLE:
		dout<<"close"<<endl;
		pMyIRQ->physicalMask();
		if(bVirIrq) delete pMyIRQ;
		break;

	case MDR_SERVICE_UNMAP:
		dout<<"unmap"<<endl;
		pReq = *(PMAPDEVREQUEST*)pDIOCParams->dioc_InBuf;	
		UnmapDevice(
			pReq->mdr_LinearAddress,
			pReq->mdr_SizeInBytes
			);
		pReq->mdr_Status = MDR_STATUS_SUCCESS;
		break;	
		
	case MDR_SERVICE_MAP:
		dout<<"map"<<endl;
		pReq = *(PMAPDEVREQUEST*)pDIOCParams->dioc_InBuf;	
		pReq->mdr_LinearAddress = MapDevice(
			pReq->mdr_PhysicalAddress,		
			pReq->mdr_SizeInBytes				
			);									
		if	(pReq->mdr_LinearAddress == NULL) 
			pReq->mdr_Status=MDR_STATUS_ERROR;
		else
			pReq->mdr_Status=MDR_STATUS_SUCCESS;
		break;

	case GETMEMBASE0:
		dout<<"getmembase0"<<endl;
		*(DWORD*)pDIOCParams->dioc_OutBuf=membase[0];
		break;

	case GETMEMBASE1:
		dout<<"getmembase1"<<endl;
		*(DWORD*)pDIOCParams->dioc_OutBuf=membase[1];
		break;

	case GETIOBASE:
		dout<<"GETIOBASE"<<endl;
		*(DWORD*)pDIOCParams->dioc_OutBuf=ioport;
		break;

	case GETIRQ:
		dout<<"GETIRQ"<<endl;
		*(int*)pDIOCParams->dioc_OutBuf=irq;
		break;

	case ADDRPASS:
		dout<<"addrpass"<<endl;
		CallBackApc = pDIOCParams->dioc_InBuf;
		TheThread = Get_Cur_Thread_Handle();
		break;
	default:
		return -1;
	}
	return 0;
}

BOOL MyHwInt::OnSharedHardwareInt(VMHANDLE)
{
	pMyIRQ->physicalMask();
	x++;
	if(x>70&&x<75)
	{
		VWIN32_QueueUserApc(CallBackApc, (DWORD)&x, TheThread);
	}
	for(int temp=0;temp<10000;temp++);
	sendPhysicalEOI();
	pMyIRQ->physicalUnmask();
	if(x>200)
	{
		pMyIRQ->physicalMask();
	}
	return FALSE;

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美96一区二区免费视频| 欧美久久一二区| 国内久久婷婷综合| 日韩av电影免费观看高清完整版 | 亚洲欧美一区二区三区久本道91| 欧美哺乳videos| 日韩欧美久久久| 精品日韩在线观看| 久久精品在线免费观看| 国产精品天干天干在观线| 久久久久久毛片| 中文字幕一区二区三区四区| 亚洲天堂网中文字| 亚洲成人免费看| 国产精品正在播放| 懂色av中文字幕一区二区三区 | 亚洲国产经典视频| 17c精品麻豆一区二区免费| 亚洲毛片av在线| 蜜桃传媒麻豆第一区在线观看| 捆绑紧缚一区二区三区视频 | 亚洲精品国产高清久久伦理二区| 亚洲免费观看高清完整版在线观看 | 精东粉嫩av免费一区二区三区| 国模一区二区三区白浆| 成人av动漫在线| 欧美日韩一区二区电影| 欧美电影免费观看高清完整版在线| 精品成人在线观看| 日韩理论片中文av| 另类小说视频一区二区| av在线不卡电影| 欧美一区二区三区免费观看视频| 久久久久国产精品麻豆 | 欧美伦理视频网站| 国产午夜亚洲精品羞羞网站| 亚洲激情六月丁香| 国产主播一区二区| 欧美视频你懂的| 久久久精品免费免费| 亚洲va韩国va欧美va| 国产成人精品三级麻豆| 在线不卡一区二区| 亚洲情趣在线观看| 国产福利91精品| 91精品国产麻豆| 亚洲精品视频自拍| 国产69精品一区二区亚洲孕妇| 欧美日韩久久久一区| 国产精品蜜臀在线观看| 美女性感视频久久| 欧美日韩在线播| 亚洲视频一区二区在线| 国产成人亚洲综合色影视| 欧美一区二区视频网站| 一区二区三区在线观看视频| 国产成人日日夜夜| 精品国产露脸精彩对白| 无码av免费一区二区三区试看| 波多野结衣亚洲一区| 久久久久久久精| 国产伦精品一区二区三区在线观看| 欧美日韩免费电影| 一区二区三区美女| 色综合天天性综合| 1024成人网| 欧美疯狂做受xxxx富婆| 国产精品久久久久久久久晋中| 精品一二三四在线| 精品日韩欧美一区二区| 日韩成人免费在线| 91精品国产综合久久久蜜臀图片 | 亚洲色图在线视频| 从欧美一区二区三区| 国产亚洲婷婷免费| 国产成人免费视频网站高清观看视频| 日韩三级.com| 乱一区二区av| 国产日韩精品一区二区三区 | 中文字幕亚洲精品在线观看| www.亚洲在线| 亚洲免费在线观看| 欧美午夜寂寞影院| 日韩av在线免费观看不卡| 日韩视频永久免费| 国产精品中文有码| 中文字幕中文字幕一区| 91丨九色丨黑人外教| 亚洲综合丁香婷婷六月香| 欧美影院午夜播放| 蜜臀av性久久久久蜜臀aⅴ四虎 | 69p69国产精品| 精品一区二区影视| 久久精品欧美一区二区三区不卡 | 亚洲天堂av一区| 欧美日韩一区二区在线观看视频 | 欧美中文字幕亚洲一区二区va在线| 亚洲免费观看高清完整版在线观看 | 欧美在线影院一区二区| 午夜精品久久久久久久99水蜜桃| 欧美一级理论片| 国产成人在线观看| 一区二区三区日韩欧美| 日韩精品中文字幕在线不卡尤物| 国产精品伊人色| 亚洲一区在线视频| 精品理论电影在线观看 | 成人av电影观看| 亚洲h在线观看| 国产欧美日韩一区二区三区在线观看 | 奇米一区二区三区| 国产精品妹子av| 欧美久久一二区| 国产白丝网站精品污在线入口| 亚洲日韩欧美一区二区在线| 欧美一区二区三区播放老司机| 91黄色免费观看| 国产精品一二三在| 亚洲午夜成aⅴ人片| 国产亚洲欧美日韩俺去了| 欧美色网站导航| 91在线porny国产在线看| 六月丁香婷婷久久| 亚洲成av人片www| 国产精品毛片久久久久久久| 日韩一区二区三区观看| 色综合久久久久综合99| 国产精品一卡二| 精品综合免费视频观看| 一区二区三区中文在线观看| 久久精品一区四区| 日韩一区二区在线看| 欧美亚一区二区| 91免费小视频| av激情亚洲男人天堂| 国产精品白丝jk黑袜喷水| 毛片一区二区三区| 日韩激情在线观看| 亚洲国产va精品久久久不卡综合 | 日韩成人午夜电影| 亚洲国产精品一区二区尤物区| 国产精品水嫩水嫩| 国产亚洲成aⅴ人片在线观看| 欧美一级欧美三级| 欧美老女人在线| 欧美少妇xxx| 欧美日韩dvd在线观看| 欧美自拍偷拍一区| 欧美亚洲精品一区| 欧美在线三级电影| 精品视频1区2区3区| 日本高清不卡aⅴ免费网站| 91视视频在线直接观看在线看网页在线看 | 国产成人综合自拍| 国产精品一区二区三区99| 国产激情一区二区三区四区| 国产综合色在线| 国产成人av电影在线观看| 国产精华液一区二区三区| eeuss鲁片一区二区三区| av亚洲精华国产精华精华| 99精品欧美一区二区三区综合在线| 91网页版在线| 欧美中文字幕亚洲一区二区va在线| 在线中文字幕不卡| 欧美久久久久久久久中文字幕| 欧美群妇大交群的观看方式| 69堂亚洲精品首页| 精品黑人一区二区三区久久 | 欧美少妇性性性| 日韩欧美电影一二三| 久久久精品tv| 一区免费观看视频| 午夜视频久久久久久| 久草中文综合在线| 99久久精品久久久久久清纯| 色偷偷一区二区三区| 欧美精品免费视频| 久久久精品欧美丰满| 亚洲欧美日韩系列| 视频一区二区中文字幕| 国产精品一区二区你懂的| 在线精品国精品国产尤物884a| 884aa四虎影成人精品一区| 精品91自产拍在线观看一区| 中文字幕一区日韩精品欧美| 亚洲香肠在线观看| 国产一区美女在线| 在线看国产一区二区| www国产成人| 午夜精品福利在线| 成人精品国产福利| 久久久久久久综合日本| 亚洲精品乱码久久久久久| 奇米影视一区二区三区| 99精品热视频| 久久久久久久久久久久电影 | 99精品一区二区三区| 日韩精品一区二区在线| 亚洲精品中文字幕乱码三区 |