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

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

?? driver.cpp

?? 《Windows驅(qū)動(dòng)開(kāi)發(fā)技術(shù)詳解》隨書源碼
?? 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)來(lái)的驅(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(("DriverA:Enter A DriverEntry\n"));

	//注冊(cè)其他驅(qū)動(dòng)調(diào)用函數(shù)入口
	pDriverObject->DriverUnload = HelloDDKUnload;
	pDriverObject->MajorFunction[IRP_MJ_CREATE] = HelloDDKCreate;
	pDriverObject->MajorFunction[IRP_MJ_CLOSE] = HelloDDKClose;
	pDriverObject->MajorFunction[IRP_MJ_WRITE] = HelloDDKDispatchRoutine;
	pDriverObject->MajorFunction[IRP_MJ_READ] = HelloDDKRead;
	
	//創(chuàng)建驅(qū)動(dòng)設(shè)備對(duì)象
	status = CreateDevice(pDriverObject);

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

#pragma LOCKEDCODE
VOID OnTimerDpc( IN PKDPC pDpc,
					  IN PVOID pContext,
					  IN PVOID SysArg1,
					  IN PVOID SysArg2 ) 
{
	PDEVICE_OBJECT pDevObj = (PDEVICE_OBJECT)pContext;
	PDEVICE_EXTENSION pdx = (PDEVICE_EXTENSION)pDevObj->DeviceExtension;

	PIRP currentPendingIRP = pdx->currentPendingIRP;

	KdPrint(("DriverA:complete the Driver A IRP_MJ_READ irp!\n"));

	//設(shè)置完成狀態(tài)為STATUS_CANCELLED
 	currentPendingIRP->IoStatus.Status = STATUS_SUCCESS;
 	currentPendingIRP->IoStatus.Information = 0;	// bytes xfered
 	IoCompleteRequest( currentPendingIRP, IO_NO_INCREMENT );
}

/************************************************************************
* 函數(shù)名稱:CreateDevice
* 功能描述:初始化設(shè)備對(duì)象
* 參數(shù)列表:
      pDriverObject:從I/O管理器中傳進(jìn)來(lái)的驅(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\\MyDDKDeviceA");
	
	//創(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_BUFFERED_IO;
	pDevExt = (PDEVICE_EXTENSION)pDevObj->DeviceExtension;
	pDevExt->pDevice = pDevObj;
	pDevExt->ustrDeviceName = devName;

	KeInitializeTimer( &pDevExt->pollingTimer );

	KeInitializeDpc( &pDevExt->pollingDPC,
						OnTimerDpc,
						(PVOID) pDevObj );

	//創(chuàng)建符號(hào)鏈接
	UNICODE_STRING symLinkName;
	RtlInitUnicodeString(&symLinkName,L"\\??\\HelloDDKA");
	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(("DriverA:Enter A DriverUnload\n"));
	pNextObj = pDriverObject->DeviceObject;
	while (pNextObj != NULL) 
	{
		PDEVICE_EXTENSION pDevExt = (PDEVICE_EXTENSION)
			pNextObj->DeviceExtension;

		//刪除符號(hào)鏈接
		UNICODE_STRING pLinkName = pDevExt->ustrSymLinkName;
		IoDeleteSymbolicLink(&pLinkName);
		pNextObj = pNextObj->NextDevice;
		IoDeleteDevice( pDevExt->pDevice );
	}
	KdPrint(("DriverA:Leave A DriverUnload\n"));
}


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

	PDEVICE_EXTENSION pDevExt = (PDEVICE_EXTENSION)
			pDevObj->DeviceExtension;

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

	//將掛起的IRP記錄下來(lái)
	pDevExt->currentPendingIRP = pIrp;

	//定義3秒后將IRP_MJ_READ的IRP完成
	ULONG ulMicroSecond = 3000000;

	//將32位整數(shù)轉(zhuǎn)化成64位整數(shù)
	LARGE_INTEGER timeout = RtlConvertLongToLargeInteger(-10*ulMicroSecond);
	
	KeSetTimer(
		&pDevExt->pollingTimer,
		timeout,
		&pDevExt->pollingDPC );

	KdPrint(("DriverA:Leave A HelloDDKRead\n"));

	//返回pending狀態(tài)
	return STATUS_PENDING;
}


/************************************************************************
* 函數(shù)名稱:HelloDDKDispatchRoutine
* 功能描述:對(duì)讀IRP進(jìn)行處理
* 參數(shù)列表:
      pDevObj:功能設(shè)備對(duì)象
      pIrp:從IO請(qǐng)求包
* 返回 值:返回狀態(tài)
*************************************************************************/
#pragma PAGEDCODE
NTSTATUS HelloDDKDispatchRoutine(IN PDEVICE_OBJECT pDevObj,
								 IN PIRP pIrp) 
{
	KdPrint(("DriverA:Enter A HelloDDKDispatchRoutine\n"));
	NTSTATUS status = STATUS_SUCCESS;
	// 完成IRP
	pIrp->IoStatus.Status = status;
	pIrp->IoStatus.Information = 0;	// bytes xfered
	IoCompleteRequest( pIrp, IO_NO_INCREMENT );
	KdPrint(("DriverA:Leave A HelloDDKDispatchRoutine\n"));
	return status;
}

#pragma PAGEDCODE
NTSTATUS HelloDDKCreate(IN PDEVICE_OBJECT pDevObj,
								 IN PIRP pIrp) 
{
	KdPrint(("DriverA:Enter A HelloDDKCreate\n"));
	NTSTATUS status = STATUS_SUCCESS;
	// 完成IRP
	pIrp->IoStatus.Status = status;
	pIrp->IoStatus.Information = 0;	// bytes xfered
	IoCompleteRequest( pIrp, IO_NO_INCREMENT );
	KdPrint(("DriverA:Leave A HelloDDKCreate\n"));
	return status;
}

#pragma PAGEDCODE
NTSTATUS HelloDDKClose(IN PDEVICE_OBJECT pDevObj,
								 IN PIRP pIrp) 
{
	KdPrint(("DriverA:Enter A HelloDDKClose\n"));
	NTSTATUS status = STATUS_SUCCESS;
	// 完成IRP
	pIrp->IoStatus.Status = status;
	pIrp->IoStatus.Information = 0;	// bytes xfered
	IoCompleteRequest( pIrp, IO_NO_INCREMENT );
	KdPrint(("DriverA:Leave A HelloDDKClose\n"));
	return status;
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区午夜精品| 欧美福利电影网| 国产一区二区不卡| 久久国产成人午夜av影院| 热久久免费视频| 久久国产精品99精品国产 | 久久精品亚洲精品国产欧美kt∨ | 国产成人日日夜夜| 国产一区二区导航在线播放| 国产麻豆午夜三级精品| 狠狠色综合播放一区二区| 青青草精品视频| 国产一区二区视频在线播放| 国产精品资源网| 99免费精品在线| 欧美在线免费播放| 精品三级在线看| 国产精品国产a级| 日韩毛片精品高清免费| 亚洲国产日产av| 激情综合色播激情啊| 懂色av中文字幕一区二区三区 | 亚洲国产美国国产综合一区二区| 亚洲国产精品久久不卡毛片 | 日本精品裸体写真集在线观看| 91麻豆免费视频| 91精品国产美女浴室洗澡无遮挡| 精品免费一区二区三区| 欧美国产日韩亚洲一区| 五月激情六月综合| 国产一本一道久久香蕉| 欧美影视一区在线| 久久久久久免费网| 亚洲一区二区欧美日韩| 国产精品亚洲综合一区在线观看| 在线观看欧美日本| 久久久av毛片精品| 亚洲成a人v欧美综合天堂下载| 国产盗摄视频一区二区三区| 欧美性一二三区| 国产欧美精品一区| 日本在线不卡视频一二三区| www.色综合.com| 久久夜色精品国产噜噜av | 欧美男男青年gay1069videost| 久久丝袜美腿综合| 午夜精品久久久久久| 成人毛片在线观看| 欧美电影免费观看高清完整版在| 亚洲资源在线观看| 99国产精品久久久久久久久久久| 91精品国产麻豆| 亚洲国产裸拍裸体视频在线观看乱了| 国产精品1区二区.| 日韩欧美亚洲国产另类| 亚洲一区二区三区中文字幕| 成人免费av网站| 国产欧美精品国产国产专区| 久久99热这里只有精品| 欧美剧在线免费观看网站 | 欧美一区午夜精品| 亚洲国产综合91精品麻豆| 99精品国产91久久久久久| 欧美国产视频在线| 懂色av中文字幕一区二区三区| 久久久久久久久久久电影| 精品影视av免费| 精品电影一区二区| 久久99在线观看| 久久人人97超碰com| 精品一区二区在线播放| 日韩欧美国产一区在线观看| 日本特黄久久久高潮| 制服.丝袜.亚洲.中文.综合 | 久久久久青草大香线综合精品| 美国一区二区三区在线播放| 日韩亚洲欧美在线| 麻豆国产欧美日韩综合精品二区| 欧美成人欧美edvon| 国内精品免费在线观看| 国产亚洲一区二区在线观看| 国产成人在线视频网站| 国产精品电影一区二区三区| 91免费看`日韩一区二区| 亚洲美女在线一区| 欧美日韩在线三区| 六月丁香综合在线视频| 久久久99精品免费观看| 99视频一区二区| 亚洲一区二区三区在线| 91精品国产乱码| 风间由美一区二区三区在线观看| 国产精品欧美一级免费| 91成人免费在线| 蜜臀av一级做a爰片久久| 久久久精品国产免大香伊 | 日日夜夜免费精品| 精品日韩欧美在线| 成人动漫中文字幕| 亚洲成人综合网站| 久久久亚洲精品一区二区三区 | 91麻豆精品国产自产在线| 麻豆精品一区二区综合av| 国产亚洲午夜高清国产拍精品| av日韩在线网站| 午夜成人免费视频| 中文字幕av资源一区| 欧美日韩国产高清一区二区三区| 狠狠色狠狠色综合| 一区二区三区欧美日| 精品女同一区二区| 色哦色哦哦色天天综合| 国产在线视频一区二区三区| 亚洲精品中文字幕在线观看| 日韩欧美在线影院| 日本韩国视频一区二区| 国内精品久久久久影院色| 一区二区三区国产| 中文字幕免费一区| 精品久久一二三区| 欧美电影一区二区| 91视频在线看| 成人午夜视频在线| 久久se精品一区二区| 亚洲一区二区三区激情| 国产精品私人影院| 日韩一级片在线观看| 一本色道久久综合亚洲精品按摩| 国产一区在线看| 日韩av中文字幕一区二区三区| 亚洲欧美日韩成人高清在线一区| 精品国产不卡一区二区三区| 在线观看网站黄不卡| 成人福利在线看| 国产成人精品影视| 精品在线免费观看| 全部av―极品视觉盛宴亚洲| 亚洲高清三级视频| 亚洲精品久久久久久国产精华液| 中文一区二区完整视频在线观看| 久久综合九色综合97婷婷| 欧美一区二区视频在线观看2020| 日本韩国欧美在线| 欧美自拍丝袜亚洲| 91黄色免费网站| 日本高清视频一区二区| 一本色道久久加勒比精品| av高清久久久| 色噜噜夜夜夜综合网| 91国内精品野花午夜精品| 91老师片黄在线观看| 91啪九色porn原创视频在线观看| 97精品久久久久中文字幕| 91蜜桃传媒精品久久久一区二区| 99精品在线免费| 色哟哟在线观看一区二区三区| 日本乱人伦一区| 7777女厕盗摄久久久| 91.麻豆视频| 日韩精品一区二区三区视频| 国产亚洲污的网站| 国产精品萝li| 亚洲一区二区三区四区五区中文| 亚洲成a人v欧美综合天堂| 日本视频免费一区| 捆绑调教美女网站视频一区| 国产福利91精品| 在线看国产一区| 欧美一区二区三区视频在线观看| 精品福利二区三区| 中文一区二区完整视频在线观看| 亚洲免费在线播放| 午夜国产不卡在线观看视频| 国产在线不卡视频| 91久久线看在观草草青青| 91精品国产综合久久福利软件 | 视频在线观看一区二区三区| 奇米影视一区二区三区小说| 国产一区二区精品久久99| 国产福利一区二区三区视频| 在线免费观看日韩欧美| 日韩精品自拍偷拍| 最好看的中文字幕久久| 视频一区欧美精品| 成人精品小蝌蚪| 欧美男人的天堂一二区| 国产精品丝袜黑色高跟| 亚洲国产成人va在线观看天堂| 国产精品一区久久久久| 日本久久一区二区| 久久青草欧美一区二区三区| 一区二区三区国产豹纹内裤在线| 国产一区二区三区在线观看精品 | 丝袜脚交一区二区| 成人福利电影精品一区二区在线观看| 在线不卡免费欧美| 国产精品视频一二| 久久国产夜色精品鲁鲁99| 在线精品视频一区二区三四| 国产精品久久毛片|