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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? driver.cpp

?? 本代碼給出了內(nèi)核模式下對(duì)端口操作的5種方法
?? CPP
字號(hào):
/************************************************************************
* 文件名稱:Driver.cpp                                                 
* 作    者:張帆
* 完成日期:2007-11-1
*************************************************************************/

#include "Driver.h"

/************************************************************************
* 函數(shù)名稱:DriverEntry
* 功能描述:初始化驅(qū)動(dòng)程序,定位和申請(qǐng)硬件資源,創(chuàng)建內(nèi)核對(duì)象
* 參數(shù)列表:
      pDriverObject:從I/O管理器中傳進(jìn)來的驅(qū)動(dòng)對(duì)象
      pRegistryPath:驅(qū)動(dòng)程序在注冊(cè)表的中的路徑
* 返回 值:返回初始化驅(qū)動(dòng)狀態(tài)
*************************************************************************/
#pragma INITCODE
extern "C" NTSTATUS DriverEntry (
			IN PDRIVER_OBJECT pDriverObject,
			IN PUNICODE_STRING pRegistryPath	) 
{
	NTSTATUS status;
	KdPrint(("Enter DriverEntry\n"));

	//設(shè)置卸載函數(shù)
	pDriverObject->DriverUnload = HelloDDKUnload;

	//設(shè)置派遣函數(shù)
	for (int i = 0; i < arraysize(pDriverObject->MajorFunction); ++i)
		pDriverObject->MajorFunction[i] = HelloDDKDispatchRoutin;

	pDriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = HelloDDKDeviceIOControl;
	
	//創(chuàng)建驅(qū)動(dòng)設(shè)備對(duì)象
	status = CreateDevice(pDriverObject);

	KdPrint(("Leave DriverEntry\n"));
	return status;
}

/************************************************************************
* 函數(shù)名稱:CreateDevice
* 功能描述:初始化設(shè)備對(duì)象
* 參數(shù)列表:
      pDriverObject:從I/O管理器中傳進(jìn)來的驅(qū)動(dòng)對(duì)象
* 返回 值:返回初始化狀態(tài)
*************************************************************************/
#pragma INITCODE
NTSTATUS CreateDevice (
		IN PDRIVER_OBJECT	pDriverObject) 
{
	NTSTATUS status;
	PDEVICE_OBJECT pDevObj;
	PDEVICE_EXTENSION pDevExt;
	
	//創(chuàng)建設(shè)備名稱
	UNICODE_STRING devName;
	RtlInitUnicodeString(&devName,L"\\Device\\MyDDKDevice");
	
	//創(chuàng)建設(shè)備
	status = IoCreateDevice( pDriverObject,
						sizeof(DEVICE_EXTENSION),
						&(UNICODE_STRING)devName,
						FILE_DEVICE_UNKNOWN,
						0, TRUE,
						&pDevObj );
	if (!NT_SUCCESS(status))
		return status;

	pDevObj->Flags |= DO_DIRECT_IO;
	pDevExt = (PDEVICE_EXTENSION)pDevObj->DeviceExtension;
	pDevExt->pDevice = pDevObj;
	pDevExt->ustrDeviceName = devName;

	//申請(qǐng)模擬文件的緩沖區(qū)
	pDevExt->buffer = (PUCHAR)ExAllocatePool(PagedPool,MAX_FILE_LENGTH);
	//設(shè)置模擬文件大小
	pDevExt->file_length = 0;

	//創(chuàng)建符號(hào)鏈接
	UNICODE_STRING symLinkName;
	RtlInitUnicodeString(&symLinkName,L"\\??\\HelloDDK");
	pDevExt->ustrSymLinkName = symLinkName;
	status = IoCreateSymbolicLink( &symLinkName,&devName );
	if (!NT_SUCCESS(status)) 
	{
		IoDeleteDevice( pDevObj );
		return status;
	}
	return STATUS_SUCCESS;
}

/************************************************************************
* 函數(shù)名稱:HelloDDKUnload
* 功能描述:負(fù)責(zé)驅(qū)動(dòng)程序的卸載操作
* 參數(shù)列表:
      pDriverObject:驅(qū)動(dòng)對(duì)象
* 返回 值:返回狀態(tài)
*************************************************************************/
#pragma PAGEDCODE
VOID HelloDDKUnload (IN PDRIVER_OBJECT pDriverObject) 
{
	PDEVICE_OBJECT	pNextObj;
	KdPrint(("Enter DriverUnload\n"));
	pNextObj = pDriverObject->DeviceObject;
	while (pNextObj != NULL) 
	{
		PDEVICE_EXTENSION pDevExt = (PDEVICE_EXTENSION)
			pNextObj->DeviceExtension;
		if (pDevExt->buffer)
		{
			ExFreePool(pDevExt->buffer);
			pDevExt->buffer = NULL;
		}

		//刪除符號(hào)鏈接
		UNICODE_STRING pLinkName = pDevExt->ustrSymLinkName;
		IoDeleteSymbolicLink(&pLinkName);
		pNextObj = pNextObj->NextDevice;
		IoDeleteDevice( pDevExt->pDevice );
	}
}

/************************************************************************
* 函數(shù)名稱:HelloDDKDispatchRoutin
* 功能描述:對(duì)讀IRP進(jìn)行處理
* 參數(shù)列表:
      pDevObj:功能設(shè)備對(duì)象
      pIrp:從IO請(qǐng)求包
* 返回 值:返回狀態(tài)
*************************************************************************/
#pragma PAGEDCODE
NTSTATUS HelloDDKDispatchRoutin(IN PDEVICE_OBJECT pDevObj,
								 IN PIRP pIrp) 
{
	KdPrint(("Enter HelloDDKDispatchRoutin\n"));

	PIO_STACK_LOCATION stack = IoGetCurrentIrpStackLocation(pIrp);
	//建立一個(gè)字符串?dāng)?shù)組與IRP類型對(duì)應(yīng)起來
	static char* irpname[] = 
	{
		"IRP_MJ_CREATE",
		"IRP_MJ_CREATE_NAMED_PIPE",
		"IRP_MJ_CLOSE",
		"IRP_MJ_READ",
		"IRP_MJ_WRITE",
		"IRP_MJ_QUERY_INFORMATION",
		"IRP_MJ_SET_INFORMATION",
		"IRP_MJ_QUERY_EA",
		"IRP_MJ_SET_EA",
		"IRP_MJ_FLUSH_BUFFERS",
		"IRP_MJ_QUERY_VOLUME_INFORMATION",
		"IRP_MJ_SET_VOLUME_INFORMATION",
		"IRP_MJ_DIRECTORY_CONTROL",
		"IRP_MJ_FILE_SYSTEM_CONTROL",
		"IRP_MJ_DEVICE_CONTROL",
		"IRP_MJ_INTERNAL_DEVICE_CONTROL",
		"IRP_MJ_SHUTDOWN",
		"IRP_MJ_LOCK_CONTROL",
		"IRP_MJ_CLEANUP",
		"IRP_MJ_CREATE_MAILSLOT",
		"IRP_MJ_QUERY_SECURITY",
		"IRP_MJ_SET_SECURITY",
		"IRP_MJ_POWER",
		"IRP_MJ_SYSTEM_CONTROL",
		"IRP_MJ_DEVICE_CHANGE",
		"IRP_MJ_QUERY_QUOTA",
		"IRP_MJ_SET_QUOTA",
		"IRP_MJ_PNP",
	};

	UCHAR type = stack->MajorFunction;
	if (type >= arraysize(irpname))
		KdPrint((" - Unknown IRP, major type %X\n", type));
	else
		KdPrint(("\t%s\n", irpname[type]));

	NTSTATUS status = STATUS_SUCCESS;
	// 完成IRP
	pIrp->IoStatus.Status = status;
	pIrp->IoStatus.Information = 0;	// bytes xfered
	IoCompleteRequest( pIrp, IO_NO_INCREMENT );

	KdPrint(("Leave HelloDDKDispatchRoutin\n"));

	return status;
}

#pragma PAGEDCODE
NTSTATUS HelloDDKDeviceIOControl(IN PDEVICE_OBJECT pDevObj,
								 IN PIRP pIrp)
{
	NTSTATUS status = STATUS_SUCCESS;
	KdPrint(("Enter HelloDDKDeviceIOControl\n"));

	//得到當(dāng)前堆棧
	PIO_STACK_LOCATION stack = IoGetCurrentIrpStackLocation(pIrp);
	//得到輸入緩沖區(qū)大小
	ULONG cbin = stack->Parameters.DeviceIoControl.InputBufferLength;
	//得到輸出緩沖區(qū)大小
	ULONG cbout = stack->Parameters.DeviceIoControl.OutputBufferLength;
	//得到IOCTL碼
	ULONG code = stack->Parameters.DeviceIoControl.IoControlCode;

	ULONG info = 0;

	switch (code)
	{						// process request
		case IOCTL_ENABLEDIRECTIO:
		{
			KdPrint(("IOCTL_ENABLEDIRECTIO\n"));
			pIOPM = (UCHAR*)MmAllocateNonCachedMemory(IOPM_SIZE);
			if (pIOPM)
			{
				RtlZeroMemory(pIOPM, IOPM_SIZE);
				Ke386IoSetAccessProcess(PsGetCurrentProcess(), 1);
				Ke386SetIoAccessMap(1, pIOPM);
			}
			else
				pIrp->IoStatus.Status = STATUS_INSUFFICIENT_RESOURCES;
		}
		case IOCTL_DISABLEDIRECTIO:
		{
			KdPrint(("IOCTL_DISABLEDIRECTIO\n"));
			if (pIOPM)
			{
				Ke386IoSetAccessProcess(PsGetCurrentProcess(), 0);
				Ke386SetIoAccessMap(1, pIOPM);

				MmFreeNonCachedMemory(pIOPM, IOPM_SIZE);
				pIOPM = NULL;
			}
		}
		default:
			status = STATUS_INVALID_VARIANT;
	}

	// 完成IRP
	pIrp->IoStatus.Status = status;
	pIrp->IoStatus.Information = info;	// bytes xfered
	IoCompleteRequest( pIrp, IO_NO_INCREMENT );

	KdPrint(("Leave HelloDDKDeviceIOControl\n"));

	return status;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人午夜激情在线| 久久精品国产色蜜蜜麻豆| 成人丝袜高跟foot| 国产精品欧美久久久久无广告 | 亚洲色图欧美激情| 99视频在线观看一区三区| 自拍偷拍国产精品| 欧美午夜在线观看| 日本欧美加勒比视频| 精品国产91乱码一区二区三区 | 国产精品超碰97尤物18| 不卡的看片网站| 樱花影视一区二区| 在线播放日韩导航| 激情久久五月天| 国产精品网站一区| 欧美体内she精视频| 日本欧美一区二区| 国产精品视频免费看| 日本久久一区二区三区| 奇米在线7777在线精品| 国产清纯美女被跳蛋高潮一区二区久久w | 国产人伦精品一区二区| 一本大道av一区二区在线播放| 午夜视频一区二区| 26uuu欧美日本| 色综合欧美在线视频区| 日韩av电影免费观看高清完整版 | 在线不卡中文字幕| 福利一区福利二区| 亚洲成人手机在线| 久久综合网色—综合色88| 91香蕉视频污| 精品亚洲国产成人av制服丝袜 | 亚洲国产成人91porn| 精品日韩欧美在线| 色先锋久久av资源部| 极品美女销魂一区二区三区| 亚洲日本va午夜在线影院| 精品久久久久久久人人人人传媒| 91麻豆福利精品推荐| 9人人澡人人爽人人精品| 午夜av一区二区| 国产精品美女www爽爽爽| 日韩一级大片在线| 91在线观看地址| 国产乱人伦偷精品视频不卡| 夜夜亚洲天天久久| 国产精品沙发午睡系列990531| 91精品久久久久久久91蜜桃| 色综合天天综合网国产成人综合天 | 成人美女视频在线观看| 蜜臀99久久精品久久久久久软件| 亚洲欧美视频在线观看视频| 欧美成人国产一区二区| 欧美日韩久久久| 色天使色偷偷av一区二区| 国产精品影视在线| 日本欧洲一区二区| 亚洲电影一区二区三区| ...av二区三区久久精品| 久久久久久久国产精品影院| 欧美一区三区二区| 欧美日韩视频专区在线播放| 91亚洲国产成人精品一区二区三| 国产99久久久国产精品潘金| 国内精品久久久久影院色| 日产精品久久久久久久性色| 亚洲最色的网站| 一区二区三区在线不卡| 国产精品久久毛片a| 国产欧美精品一区二区色综合 | 欧美男女性生活在线直播观看| 色天使久久综合网天天| 91亚洲精华国产精华精华液| 99综合电影在线视频| av一区二区三区在线| 成人黄动漫网站免费app| 国产成人综合精品三级| 国产大片一区二区| 国产精品一色哟哟哟| 国产成人自拍网| 国产成人福利片| www.亚洲人| 91麻豆福利精品推荐| 在线观看亚洲一区| 欧美日韩国产高清一区二区| 欧美精品在线视频| 欧美成人一区二区三区在线观看| 26uuu另类欧美亚洲曰本| 久久婷婷国产综合精品青草| 国产亚洲福利社区一区| 国产日韩欧美精品一区| 国产精品久久夜| 亚洲日本va在线观看| 亚洲午夜久久久久久久久久久 | 理论片日本一区| 韩国午夜理伦三级不卡影院| 国内精品伊人久久久久影院对白| 欧美三片在线视频观看| 精品视频一区二区三区免费| 欧美一级搡bbbb搡bbbb| 国产日韩精品一区二区浪潮av| 中文字幕亚洲区| 香蕉久久夜色精品国产使用方法 | 精品国产亚洲一区二区三区在线观看| 日韩欧美国产高清| 日本一区二区成人| 午夜精品久久久久久久久| 韩国精品久久久| 91首页免费视频| 日韩一区国产二区欧美三区| 国产日韩欧美a| 亚洲成av人**亚洲成av**| 精品一区二区三区日韩| 色综合天天综合给合国产| 69精品人人人人| 国产精品久久免费看| 午夜欧美视频在线观看| 丰满放荡岳乱妇91ww| 欧美日韩国产系列| 国产日韩一级二级三级| 亚洲成a天堂v人片| 国产iv一区二区三区| 欧美日韩国产高清一区二区三区 | 日韩毛片精品高清免费| 毛片基地黄久久久久久天堂| 91污在线观看| 久久亚洲二区三区| 亚洲成av人片在线观看无码| 成人综合婷婷国产精品久久免费| 欧美日本乱大交xxxxx| 亚洲色图在线看| 狠狠色丁香久久婷婷综合丁香| 在线国产电影不卡| 国产丝袜美腿一区二区三区| 视频一区免费在线观看| 99国产精品视频免费观看| www久久精品| 午夜久久久影院| 色噜噜久久综合| 国产精品久久久久久久第一福利| 久久成人免费电影| 欧美日韩视频在线一区二区 | 日韩精品综合一本久道在线视频| 亚洲精品欧美激情| 成人精品国产一区二区4080| 精品久久久久久综合日本欧美 | 国产精品国模大尺度视频| 麻豆成人av在线| 4438成人网| 亚洲午夜久久久久中文字幕久| 99在线精品一区二区三区| 久久久国产一区二区三区四区小说| 男人的天堂久久精品| 欧美色成人综合| 亚洲午夜一二三区视频| 91精彩视频在线观看| 亚洲精品伦理在线| 91丨国产丨九色丨pron| 综合亚洲深深色噜噜狠狠网站| 成人三级伦理片| 国产精品传媒入口麻豆| 成人a级免费电影| 国产精品成人免费精品自在线观看| 国产suv一区二区三区88区| 久久久五月婷婷| 粉嫩av亚洲一区二区图片| 久久伊人中文字幕| 国产福利一区二区三区视频| 久久久蜜臀国产一区二区| 国产精品亚洲午夜一区二区三区| 久久婷婷成人综合色| 国产精品一区二区在线看| 久久精品夜夜夜夜久久| 懂色av一区二区三区免费看| 中文一区二区在线观看| 99久久99久久精品免费观看| 亚洲少妇屁股交4| 欧美日韩免费观看一区三区| 日本亚洲最大的色成网站www| 日韩精品一区二区三区在线播放| 久久av中文字幕片| 中文字幕不卡在线观看| 91网上在线视频| 亚洲香肠在线观看| 日韩午夜三级在线| 国产成人免费在线| 亚洲免费资源在线播放| 欧美美女直播网站| 国产在线播放一区| 国产精品网曝门| 欧美色男人天堂| 国产美女在线观看一区| 中文字幕综合网| 91麻豆精品91久久久久久清纯 | 欧美色综合天天久久综合精品| 天天综合色天天| 337p日本欧洲亚洲大胆精品| 99久久婷婷国产|