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

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

?? xunicdevice.cpp

?? WDM驅(qū)動程序?qū)嵗?用DriverStudio加vc
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
}

///////////////////////////////////////////////////////////////////////////////////////////////////
//  XunicDevice::OnDeviceSleep
//		Handler for IRP_MJ_POWER subfcn IRP_MN_SET_POWER 
//		for a request to go to a low power state from a high power state
//		This function was called by the framework from the IRP_MJ_POWER 
//		dispatch handler in KPnpDevice prior to forwarding to the PDO.
//		The hardware has yet to be powered down and this driver can now
//		access the hardware device.  
//		This routine runs at PASSIVE_LEVEL.
//
//	Arguments:
//		IN	I
//			the power IRP
//
//	Return Value:
//		NTSTATUS
//
NTSTATUS XunicDevice::OnDeviceSleep(KIrp I)
{
	T.Trace(TraceInfo, __FUNCTION__"++.  IRP %p\n", I);

	NTSTATUS status = STATUS_SUCCESS;

	// TODO: Add device-specific code to:
	//		 Save any context to the hardware device that will be required 
	//		 during a power up request. See the OnDevicePowerUp function.
	//		 Do NOT complete this IRP.  The base class handles forwarding
	//		 this IRP to the PDO.

	T.Trace(TraceInfo, __FUNCTION__"--.  IRP %p, STATUS %x\n", I, status);

	return status;
}


///////////////////////////////////////////////////////////////////////////////////////////////////
//  XunicDevice::Create
//		Dispatch routine for IRP_MJ_CREATE requests.  
//
//	Arguments:
//		IN I 
//			the create IRP
//
//	Return Value:
//		NTSTATUS
//
NTSTATUS XunicDevice::Create(KIrp I)
{
	T.Trace(TraceInfo, __FUNCTION__"++.  IRP %p\n", I);

	// TODO: For any IRP, to display the contents of the IRP
	//		 in a formatted way, use the KTrace << operator:
	//			 T << I;

	NTSTATUS status = STATUS_SUCCESS;

	// TODO: At this point, perform custom processing for IRP_MJ_CREATE
	// Generally a create IRP is targeted at our FDO, so its not needed
	// to pass it down to the PDO.  

	I.Information() = 0;
	I.PnpComplete(this, status);

	T.Trace(TraceInfo, __FUNCTION__"--.  IRP %p, STATUS %x\n", I, status);

	return status;
}

///////////////////////////////////////////////////////////////////////////////////////////////////
//  XunicDevice::Close
//		Dispatch routine for IRP_MJ_CLOSE requests.  
//
//	Arguments:
//		IN I 
//			the close IRP
//
//	Return Value:
//		NTSTATUS
//
NTSTATUS XunicDevice::Close(KIrp I)
{
	T.Trace(TraceInfo, __FUNCTION__"++.  IRP %p\n", I);

	NTSTATUS status = STATUS_SUCCESS;

	// TODO: At this point, perform custom processing for IRP_MJ_CLOSE
	// Generally a close IRP is targeted at our FDO, so we don't need
	// to pass it down to the PDO.  

	I.Information() = 0;
	I.PnpComplete(this, status);

	T.Trace(TraceInfo, __FUNCTION__"--.  IRP %p, STATUS %x\n", I, status);

	return status;
}

///////////////////////////////////////////////////////////////////////////////////////////////////
//  XunicDevice::Read
//		Dispatch routine for IRP_MJ_READ requests.  
//
//	Arguments:
//		IN I 
//			the read IRP
//
//	Return Value:
//		NTSTATUS
//
NTSTATUS XunicDevice::Read(KIrp I)
{
	T.Trace(TraceInfo, __FUNCTION__"++.  IRP %p\n", I);

	NTSTATUS status = STATUS_SUCCESS;

	// TODO: Validate the parameters of the IRP.  Replace "FALSE"
	//		 in the following line with error checking code that
	//		 evaulates to TRUE if the request is not valid.
	if (FALSE)
	{
		status = STATUS_INVALID_PARAMETER;
		I.Information() = 0;
		I.PnpComplete(status);

		T.Trace(TraceWarning, __FUNCTION__"--.  IRP %p, STATUS %x\n", I, status);

		return status;
	}

	// Always ok to read 0 elements
	if (I.ReadSize() == 0)
	{
		I.Information() = 0;
		I.PnpComplete(this, status);

		T.Trace(TraceInfo, __FUNCTION__"--.  IRP %p, STATUS %x\n", I, status);

		return status;
	}

	KMemory Mem(I.Mdl());	// Declare a memory object

	// Get a pointer to the caller's buffer.  Note that this
	// routine is safe on all platforms. 
	PUCHAR pBuffer = (PUCHAR) Mem.MapToSystemSpace();
	ULONG readSize = I.ReadSize();
	ULONG bytesRead = 0;

	// TODO: At this point, perform any processing for IRP_MJ_READ
	//		 To satisfy the read now, transfer data from the driver
	//		 to the caller's buffer at "pBuffer".  Then, indicate
	//		 how much data was transferred:

	I.Information() = bytesRead;


	I.PnpComplete(this, status);

	T.Trace(TraceInfo, __FUNCTION__"--.  IRP %p, STATUS %x\n", I, status);

	return status;
}

///////////////////////////////////////////////////////////////////////////////////////////////////
//  XunicDevice::Write
//		Dispatch routine for IRP_MJ_WRITE requests.  
//
//	Arguments:
//		IN I 
//			the write IRP
//
//	Return Value:
//		NTSTATUS
//
NTSTATUS XunicDevice::Write(KIrp I)
{
	T.Trace(TraceInfo, __FUNCTION__"++.  IRP %p\n", I);

	NTSTATUS status = STATUS_SUCCESS;

	// TODO: Validate the parameters of the IRP.  Replace "FALSE"
	//		 in the following line with error checking code that
	//		 evaulates to TRUE if the request is not valid.
	if (FALSE)
	{
		status = STATUS_INVALID_PARAMETER;
		I.Information() = 0;
		I.PnpComplete(status);

		T.Trace(TraceWarning, __FUNCTION__"--.  IRP %p, STATUS %x\n", I, status);

		return status;
	}

	// Always ok to write 0 elements
	if (I.WriteSize() == 0)
	{
		I.Information() = 0;
		I.PnpComplete(this, status);
        
		T.Trace(TraceInfo, __FUNCTION__"--.  IRP %p, STATUS %x\n", I, status);

		return status;
	}

	KMemory Mem(I.Mdl());	// Declare a memory object

	// Get a pointer to the caller's buffer.  Note that this
	// routine is safe on all platforms. 
	PUCHAR pBuffer = (PUCHAR) Mem.MapToSystemSpace();
	ULONG writeSize = I.WriteSize();
	ULONG bytesSent = 0;
	// TODO: At this point, perform any processing for IRP_MJ_WRITE
	//		 To satisfy the write now, transfer data to the driver
	//		 from the caller's buffer at "pBuffer".  Then, indicate
	//		 how much data was transferred:

	I.Information() = bytesSent;

	I.PnpComplete(this, status);

	T.Trace(TraceInfo, __FUNCTION__"--.  IRP %p, STATUS %x\n", I, status);

	return status;
}

///////////////////////////////////////////////////////////////////////////////////////////////////
//  XunicDevice::DeviceControl
//		Dispatch routine for IRP_MJ_DEVICE_CONTROL requests.  
//
//	Arguments:
//		IN I 
//			the ioctl IRP
//
//	Return Value:
//		NTSTATUS
//
NTSTATUS XunicDevice::DeviceControl(KIrp I)
{
	T.Trace(TraceInfo, __FUNCTION__"++.  IRP %p\n", I);

	NTSTATUS status = STATUS_SUCCESS;

	switch (I.IoctlCode())
	{
    case 0:

	default:
		status = STATUS_INVALID_DEVICE_REQUEST;
		break;
	}

	// If the IRP's IOCTL handler deferred processing using some driver
	// specific scheme, the status variable is set to STATUS_PENDING.
	// In this case we simply return that status, and the IRP will be
	// completed later.  Otherwise, complete the IRP using the status
	// returned by the IOCTL handler.
	if (status != STATUS_PENDING)
	{
		I.PnpComplete(this, status);
	}

	T.Trace(TraceInfo, __FUNCTION__"--.  IRP %p, STATUS %x\n", I, status);

	return status;
}

///////////////////////////////////////////////////////////////////////////////////////////////////
//  XunicDevice::CleanUp
//		Dispatch routine for IRP_MJ_CLEANUP requests.  
//
//	Arguments:
//		IN I 
//			the cleanup IRP
//
//	Return Value:
//		NTSTATUS
//
NTSTATUS XunicDevice::CleanUp(KIrp I)
{
	T.Trace(TraceInfo, __FUNCTION__"++.  IRP %p\n", I);

	NTSTATUS status = STATUS_SUCCESS;

	// TODO: At this point, perform custom processing for IRP_MJ_CLEANUP

	I.PnpComplete(this, status);

	T.Trace(TraceInfo, __FUNCTION__"--.  IRP %p, STATUS %x\n", I, status);

	return status;
}

///////////////////////////////////////////////////////////////////////////////////////////////////
//  XunicDevice::Invalidate
//		This method performs resource cleanup.
//		This function is called from OnStopDevice, OnRemoveDevice and
//		OnStartDevice (in error conditions).  It calls the Invalidate
//		member funcitons for each resource to free the underlying system
//		resource if allocated.  It is safe to call Invalidate more than
//		once for a resource, or for an uninitialized resource.
//
//	Arguments:
//		none
//
//	Return Value:
//		none
//
VOID XunicDevice::Invalidate()
{
	NTSTATUS status = STATUS_SUCCESS;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久综合成人精品亚洲另类欧美| 久久久久国产精品麻豆| 激情伊人五月天久久综合| 最近日韩中文字幕| 精品久久久久一区二区国产| av爱爱亚洲一区| 日韩福利视频导航| 自拍av一区二区三区| 久久久久9999亚洲精品| 欧美精品久久一区| 色欧美乱欧美15图片| 国产一级精品在线| 日本欧美久久久久免费播放网| 亚洲色大成网站www久久九九| 久久影视一区二区| 4hu四虎永久在线影院成人| 一本久道中文字幕精品亚洲嫩| 国产精品18久久久久久vr| 青椒成人免费视频| 亚洲成人久久影院| 亚洲综合精品自拍| 中文字幕免费观看一区| 欧美mv日韩mv| 欧美一区二区三区思思人| 欧美色精品在线视频| 91蝌蚪porny| 99久久99久久久精品齐齐| 国产成人免费在线视频| 国产一区二区三区香蕉| 麻豆精品一二三| 水野朝阳av一区二区三区| 一区二区三区色| 亚洲色图一区二区三区| 亚洲欧美综合另类在线卡通| 久久精品国产99| 欧美三日本三级三级在线播放| 性做久久久久久| 日韩一级片网站| 麻豆传媒一区二区三区| 亚洲国产人成综合网站| 亚洲乱码日产精品bd| 国产精品久久久久影院亚瑟| 国产日韩欧美不卡| 亚洲国产精品二十页| 中文乱码免费一区二区| 国产精品色哟哟网站| 国产精品私人影院| 一区在线播放视频| 亚洲精品欧美激情| 国产精品1区2区3区| 国产99久久久国产精品免费看| 国产精品99久久久久| 国产aⅴ综合色| 91片黄在线观看| 在线看不卡av| 欧美区在线观看| 欧美va天堂va视频va在线| 国产一区二区美女| 欧美a级理论片| 欧美不卡视频一区| 久久影院视频免费| 狠狠色狠狠色综合日日91app| 日韩av在线发布| 蜜桃久久久久久久| 国内一区二区视频| 成人精品免费看| 91搞黄在线观看| 欧美一区二区三区视频免费播放 | 7777精品伊人久久久大香线蕉完整版 | 亚洲最大成人综合| 天堂蜜桃91精品| 国产成人精品免费在线| 一本一本大道香蕉久在线精品| 欧美日韩情趣电影| 久久精品亚洲精品国产欧美kt∨ | 亚洲一区日韩精品中文字幕| 亚洲在线观看免费| 26uuu久久综合| 日韩无一区二区| 中文字幕免费在线观看视频一区| 玉足女爽爽91| 久久9热精品视频| 成人福利视频在线看| 欧美顶级少妇做爰| 亚洲国产高清不卡| 丝袜诱惑亚洲看片| 成人美女视频在线观看| 欧美日韩另类一区| 亚洲国产高清不卡| 免费视频一区二区| 99久久婷婷国产综合精品| 91精品国产综合久久精品性色| 国产欧美一区二区在线| 天天综合网 天天综合色| 成人一区二区三区在线观看| 精品视频全国免费看| 国产精品视频一二三区| 奇米精品一区二区三区在线观看 | 久久国产麻豆精品| 在线免费不卡视频| 久久精品久久99精品久久| 97久久精品人人爽人人爽蜜臀 | 欧美日韩国产a| 国产精品私人影院| 精品一区二区成人精品| 欧美性三三影院| 国产精品久久久久久久岛一牛影视 | 亚洲国产sm捆绑调教视频 | 亚洲成人资源在线| 91在线国产福利| 国产午夜精品在线观看| 日本最新不卡在线| 欧美三级视频在线观看 | 国模冰冰炮一区二区| 91精品婷婷国产综合久久性色| 一区二区三区中文字幕在线观看| 国产成人免费在线观看| 久久亚洲一级片| 美国一区二区三区在线播放| 欧美乱妇一区二区三区不卡视频| 亚洲精品水蜜桃| 91网站最新地址| 中文字幕一区不卡| 成人免费高清视频在线观看| 久久综合av免费| 国产真实乱对白精彩久久| 精品国产91久久久久久久妲己| 免费一区二区视频| 亚洲va欧美va人人爽| 91在线精品一区二区三区| 国产精品成人免费精品自在线观看| 国产一区二区三区电影在线观看| 日韩欧美精品三级| 毛片一区二区三区| 欧美mv日韩mv亚洲| 狠狠色2019综合网| www国产成人| 久久午夜国产精品| 91精品国产黑色紧身裤美女| 日韩高清不卡一区二区三区| 水野朝阳av一区二区三区| 欧美日韩在线免费视频| 亚洲图片有声小说| 欧美久久久久久久久久| 日日欢夜夜爽一区| 欧美一二三四在线| 韩国一区二区视频| 欧美激情资源网| 成人av免费在线播放| 亚洲丝袜精品丝袜在线| 在线中文字幕一区| 日韩精彩视频在线观看| 欧美成人在线直播| 国产伦精品一区二区三区在线观看| 国产婷婷色一区二区三区四区| 国产不卡在线视频| 亚洲免费av网站| 4438x成人网最大色成网站| 国模套图日韩精品一区二区| 国产欧美一区二区三区在线看蜜臀 | 成人国产精品免费| 一区二区视频在线看| 欧美日韩国产一二三| 久久成人麻豆午夜电影| 亚洲国产高清不卡| 成人激情视频网站| 日韩成人一区二区三区在线观看| 波多野结衣在线aⅴ中文字幕不卡| 亚洲女同女同女同女同女同69| 欧美狂野另类xxxxoooo| 黄色日韩三级电影| 亚洲免费av网站| 日韩一二三区不卡| 本田岬高潮一区二区三区| 午夜电影网亚洲视频| 日本一区免费视频| 欧美视频日韩视频在线观看| 美国毛片一区二区| 亚洲少妇最新在线视频| 91麻豆精品国产91久久久久久| 国产精品一二二区| 午夜精品久久久久影视| 国产丝袜美腿一区二区三区| 欧美伊人久久久久久久久影院| 久久9热精品视频| 亚洲影视在线播放| 久久久久久久精| 欧美高清一级片在线| 99久久婷婷国产综合精品电影| 奇米在线7777在线精品 | 国产精品麻豆一区二区| 91精品国产色综合久久久蜜香臀| 成人伦理片在线| 精品中文字幕一区二区| 亚洲激情综合网| 国产精品区一区二区三区| 精品国产三级电影在线观看| 日韩 欧美一区二区三区| www.日韩精品| |精品福利一区二区三区|