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

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

?? driver.cpp

?? 介紹了驅動開發中取消IRP請求的想過操作。
?? CPP
字號:
/************************************************************************
* 文件名稱:Driver.cpp                                                 
* 作    者:張帆
* 完成日期:2007-11-1
*************************************************************************/

#include "Driver.h"

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

	//設置卸載函數
	pDriverObject->DriverUnload = HelloDDKUnload;

	//設置派遣函數
	pDriverObject->MajorFunction[IRP_MJ_CREATE] = HelloDDKDispatchRoutin;
	pDriverObject->MajorFunction[IRP_MJ_CLOSE] = HelloDDKDispatchRoutin;
	pDriverObject->MajorFunction[IRP_MJ_WRITE] = HelloDDKDispatchRoutin;
	pDriverObject->MajorFunction[IRP_MJ_READ] = HelloDDKRead;
	pDriverObject->MajorFunction[IRP_MJ_CLEANUP] = HelloDDKDispatchRoutin;
	pDriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = HelloDDKDispatchRoutin;
	pDriverObject->MajorFunction[IRP_MJ_SET_INFORMATION] = HelloDDKDispatchRoutin;
	pDriverObject->MajorFunction[IRP_MJ_SHUTDOWN] = HelloDDKDispatchRoutin;
	pDriverObject->MajorFunction[IRP_MJ_SYSTEM_CONTROL] = HelloDDKDispatchRoutin;
	
	//創建驅動設備對象
	status = CreateDevice(pDriverObject);

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

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

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

	//創建符號鏈接
	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;
}

/************************************************************************
* 函數名稱:HelloDDKUnload
* 功能描述:負責驅動程序的卸載操作
* 參數列表:
      pDriverObject:驅動對象
* 返回 值:返回狀態
*************************************************************************/
#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;

		//刪除符號鏈接
		UNICODE_STRING pLinkName = pDevExt->ustrSymLinkName;
		IoDeleteSymbolicLink(&pLinkName);

		pNextObj = pNextObj->NextDevice;
		IoDeleteDevice( pDevExt->pDevice );
	}
}

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

	PIO_STACK_LOCATION stack = IoGetCurrentIrpStackLocation(pIrp);
	//建立一個字符串數組與IRP類型對應起來
	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]));


	//對一般IRP的簡單操作,后面會介紹對IRP更復雜的操作
	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;
}

VOID
CancelReadIRP(
    IN PDEVICE_OBJECT DeviceObject,
    IN PIRP Irp
    )
{
	KdPrint(("Enter CancelReadIRP\n"));

	PDEVICE_EXTENSION pDevExt = (PDEVICE_EXTENSION)
			DeviceObject->DeviceExtension;
	
	//設置完成狀態為STATUS_CANCELLED
 	Irp->IoStatus.Status = STATUS_CANCELLED;
 	Irp->IoStatus.Information = 0;	// bytes xfered
 	IoCompleteRequest( Irp, IO_NO_INCREMENT );

	//釋放Cancel自旋鎖
	IoReleaseCancelSpinLock(Irp->CancelIrql);

	KdPrint(("Leave CancelReadIRP\n"));
}


NTSTATUS HelloDDKRead(IN PDEVICE_OBJECT pDevObj,
								 IN PIRP pIrp) 
{
	KdPrint(("Enter HelloDDKRead\n"));

	PDEVICE_EXTENSION pDevExt = (PDEVICE_EXTENSION)
			pDevObj->DeviceExtension;

	IoSetCancelRoutine(pIrp,CancelReadIRP);

	//將IRP設置為掛起
	IoMarkIrpPending(pIrp);

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

	//返回pending狀態
	return STATUS_PENDING;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品精品一区| 亚洲一区自拍偷拍| 一区二区在线看| 久久99国产精品免费| 91视频国产观看| 久久亚洲一区二区三区四区| 一区二区三区产品免费精品久久75| 免费人成网站在线观看欧美高清| 99久久精品国产毛片| 欧美videos中文字幕| 亚洲第一会所有码转帖| 91性感美女视频| 欧美激情资源网| 国产一区二区三区精品欧美日韩一区二区三区 | 国产一区二区三区在线看麻豆| 99精品久久只有精品| 国产亚洲一区二区在线观看| 丝瓜av网站精品一区二区 | 欧美在线观看视频在线| 中文字幕一区二区三中文字幕| 青青青伊人色综合久久| 色综合天天综合网天天狠天天| 国产三级一区二区| 麻豆精品国产91久久久久久 | a在线欧美一区| 久久久久久久精| 经典一区二区三区| 欧美一区午夜视频在线观看| 一区二区三区久久| 色综合久久综合网97色综合| 中文字幕一区不卡| 99久久精品情趣| 国产精品剧情在线亚洲| 波多野结衣中文一区| 中文字幕一区二区三| 99久久婷婷国产综合精品| 国产精品私人影院| 成人黄色av电影| 一区在线观看视频| 色婷婷综合激情| 五月婷婷综合网| 欧美一区二区黄| 狠狠色丁香婷婷综合| 久久综合九色综合97婷婷| 粉嫩av一区二区三区在线播放| 日本一区二区动态图| 91小视频在线观看| 亚洲高清免费观看| 日韩精品专区在线影院观看| 国产麻豆视频一区| 日韩一区在线播放| 欧美日韩一二区| 国产综合久久久久久鬼色| 欧美精彩视频一区二区三区| 91色婷婷久久久久合中文| 亚洲观看高清完整版在线观看| 欧美日韩精品欧美日韩精品| 麻豆精品视频在线观看| 国产农村妇女毛片精品久久麻豆 | 91麻豆国产在线观看| 亚洲高清视频中文字幕| 欧美精品一区二区精品网| 制服丝袜成人动漫| 精品无人码麻豆乱码1区2区| 亚洲欧美怡红院| 日韩小视频在线观看专区| 成人高清视频在线| 三级久久三级久久| 中文字幕的久久| 3d成人h动漫网站入口| 国产一区二区中文字幕| 亚洲欧洲综合另类| 精品美女一区二区三区| 91免费版在线| 国产综合成人久久大片91| 亚洲最大的成人av| 国产喂奶挤奶一区二区三区 | 成人午夜视频网站| 亚洲bdsm女犯bdsm网站| 国产精品天美传媒| 欧美va亚洲va| 欧美在线观看一区二区| 成人国产精品免费观看视频| 美女爽到高潮91| 亚洲午夜激情网页| 国产精品久久久久婷婷| www久久久久| 中文字幕视频一区| 精品美女在线观看| 欧美日韩精品一区二区三区蜜桃| av成人免费在线| 国产成a人亚洲精| 奇米色一区二区| 午夜国产不卡在线观看视频| 亚洲人一二三区| 国产精品美女久久久久aⅴ| 日韩欧美国产三级电影视频| 欧美伦理影视网| 欧美午夜精品理论片a级按摩| 韩国欧美国产1区| 毛片基地黄久久久久久天堂| 亚洲国产美国国产综合一区二区| 亚洲欧美国产高清| 亚洲欧美日韩国产综合| 中文字幕va一区二区三区| 亚洲精品一区二区三区99| 欧美一区二区黄| 日韩精品在线网站| 日韩三级免费观看| 欧美一区二区人人喊爽| 91精品国产综合久久精品性色| 欧美日韩在线免费视频| 欧亚洲嫩模精品一区三区| 欧美在线影院一区二区| 欧美唯美清纯偷拍| 欧美午夜视频网站| 正在播放亚洲一区| 欧美一区二区三区影视| 精品国产一区二区在线观看| 亚洲精品一区二区三区99| 久久久无码精品亚洲日韩按摩| 久久久久久久久97黄色工厂| 国产精品乱码一区二三区小蝌蚪| 国产精品区一区二区三| 韩国成人在线视频| 国产一区二区三区四区五区入口 | 国产免费成人在线视频| 久久久精品天堂| 亚洲欧洲精品一区二区三区| 亚洲女同ⅹxx女同tv| 亚洲综合图片区| 蓝色福利精品导航| 国产.欧美.日韩| 日本韩国精品一区二区在线观看| 欧美专区亚洲专区| 日韩午夜电影av| 国产欧美日韩综合精品一区二区| 国产精品第四页| 亚洲国产裸拍裸体视频在线观看乱了 | 国产·精品毛片| 一本大道久久a久久综合婷婷| 欧美日韩美少妇 | 制服丝袜成人动漫| 久久先锋影音av| 亚洲欧美日韩国产一区二区三区| 视频一区二区国产| 国产福利不卡视频| 在线看国产一区二区| 日韩午夜电影在线观看| 亚洲人成7777| 精品一区二区三区欧美| 91丨porny丨国产| 欧美成人乱码一区二区三区| 亚洲毛片av在线| 国产经典欧美精品| 欧美视频完全免费看| 久久久久久久综合| 日韩高清中文字幕一区| 岛国精品在线播放| 777午夜精品免费视频| 中文字幕精品—区二区四季| 日本不卡免费在线视频| 99r国产精品| 26uuu国产电影一区二区| 亚洲美女免费在线| 国产aⅴ综合色| 3d动漫精品啪啪1区2区免费| 亚洲欧美一区二区视频| 国产在线观看一区二区| 在线不卡a资源高清| 国产精品超碰97尤物18| 国产高清不卡一区| 在线不卡的av| 午夜激情综合网| 欧美亚洲综合一区| 一区在线观看免费| 成人免费av网站| 久久精品视频免费| 精品午夜久久福利影院| 欧美一区二区三区四区在线观看| 亚洲欧洲综合另类| 91在线国内视频| 一区在线观看免费| 成人性色生活片免费看爆迷你毛片| 欧美一区午夜视频在线观看| 亚洲成人自拍一区| 欧美亚洲综合一区| 亚洲伦在线观看| aaa亚洲精品| 日韩电影免费一区| 制服丝袜中文字幕一区| 日韩国产成人精品| 6080yy午夜一二三区久久| 亚洲电影中文字幕在线观看| 在线免费一区三区| 亚洲大片免费看| 欧美精品久久99| 免费在线观看日韩欧美| 日韩三级高清在线| 国产一区二区三区黄视频 |