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

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

?? driver.cpp

?? 這是一本介紹WIN2000環境下用WDM進行板卡驅動程序的編寫書籍
?? CPP
字號:
//
// Driver.c - Chapter 6 - Minimal Driver
//
// Copyright (C) 2000 by Jerry Lozano
//

#include "Driver.h"

// Forward declarations
//
static NTSTATUS CreateDevice (
		IN PDRIVER_OBJECT	pDriverObject,
		IN ULONG			DeviceNumber	);

static VOID DriverUnload (
		IN PDRIVER_OBJECT	pDriverObject	);

//++
// Function:	DriverEntry
//
// Description:
//		Initializes the driver, locating and claiming
//		hardware resources.  Creates the kernel objects
//		needed to process I/O requests.
//
// Arguments:
//		pDriverObject - Passed from I/O Manager
//		pRegistryPath - UNICODE_STRING pointer to
//						registry info (service key)
//						for this driver
//
// Return value:
//		NTSTATUS signaling success or failure
//--
extern "C" NTSTATUS DriverEntry (
			IN PDRIVER_OBJECT pDriverObject,
			IN PUNICODE_STRING pRegistryPath	) {
	ULONG ulDeviceNumber = 0;
	NTSTATUS status;

	// If this driver controlled real hardware,
	// code would be placed here to locate it.
	// Using IoReportResourceUsage, the ports,
	// IRQs, and DMA channels would be "marked"
	// as "in use" and under the control of this driver.
	// This minimal driver has no HW, so...

	// Announce other driver entry points
	pDriverObject->DriverUnload = DriverUnload;
	// Over time, the MajorFunction array will be filled
	
	// For each physical or logical device detected
	// that will be under this Driver's control,
	// a new Device object must be created.
	status =
		CreateDevice(pDriverObject, ulDeviceNumber);
	// This call would be repeated until all devices are created
	ulDeviceNumber++;
	status =
		CreateDevice(pDriverObject, ulDeviceNumber);

	return status;
}

//++
// Function:	CreateDevice
//
// Description:
//		Adds a new device
//
// Arguments:
//		pDriverObject - Passed from I/O Manager
//		ulDeviceNumber - Logical device number (zero-based)
//
// Return value:
//		None
//--
NTSTATUS CreateDevice (
		IN PDRIVER_OBJECT	pDriverObject,
		IN ULONG			ulDeviceNumber	) {

	NTSTATUS status;
	PDEVICE_OBJECT pDevObj;
	PDEVICE_EXTENSION pDevExt;
	
	// Form the internal Device Name
	CUString devName("\\Device\\MINIMAL");	// for "minimal" device
	devName += CUString(ulDeviceNumber);

	// Now create the device
	status =
		IoCreateDevice( pDriverObject,
						sizeof(DEVICE_EXTENSION),
						&(UNICODE_STRING)devName,
						FILE_DEVICE_UNKNOWN,
						0, TRUE,
						&pDevObj );
	if (!NT_SUCCESS(status))
		return status;

	// Initialize the Device Extension
	pDevExt = (PDEVICE_EXTENSION)pDevObj->DeviceExtension;
	pDevExt->pDevice = pDevObj;	// back pointer
	pDevExt->DeviceNumber = ulDeviceNumber;
	pDevExt->ustrDeviceName = devName;

	// Form the symbolic link name
	CUString symLinkName("\\??\\MIN");
	symLinkName += CUString(ulDeviceNumber+1);	// 1 based
	pDevExt->ustrSymLinkName = symLinkName;

	// Now create the link name
	status = 
		IoCreateSymbolicLink( &(UNICODE_STRING)symLinkName,
							  &(UNICODE_STRING)devName );
	if (!NT_SUCCESS(status)) {
		// if it fails now, must delete Device object
		IoDeleteDevice( pDevObj );
		return status;
	}

	// Made it
	return STATUS_SUCCESS;
}

//++
// Function:	DriverUnload
//
// Description:
//		Stops & Deletes devices controlled by this driver.
//		Stops interrupt processing (if any)
//		Releases kernel resources consumed by driver
//
// Arguments:
//		pDriverObject - Passed from I/O Manager
//
// Return value:
//		None
//--

VOID DriverUnload (
		IN PDRIVER_OBJECT	pDriverObject	) {

	PDEVICE_OBJECT	pNextObj;

	// Loop through each device controlled by Driver
	pNextObj = pDriverObject->DeviceObject;
	while (pNextObj != NULL) {
		// Dig out the Device Extension from the
		// Device Object
		PDEVICE_EXTENSION pDevExt = (PDEVICE_EXTENSION)
			pNextObj->DeviceExtension;
		// This will yield the symbolic link name
		UNICODE_STRING pLinkName =
			pDevExt->ustrSymLinkName;
		// ... which can now be deleted
		IoDeleteSymbolicLink(&pLinkName);
		// Free the Unicode strings...
		pDevExt->ustrSymLinkName.Free();
		pDevExt->ustrDeviceName.Free();
		// a little trickery... 
		// we need to delete the device object, BUT
		// the Device object is pointed to by pNextObj
		// If we delete the device object first,
		// we can't traverse to the next Device in the list
		// Rather than create another pointer, we can
		// use the DeviceExtension's back pointer to the device
		// So, first update the next pointer...
		pNextObj = pNextObj->NextDevice;
		// then delete the device using the Extension
		IoDeleteDevice( pDevExt->pDevice );
	}
	// Finally, hardware that was allocated in DriverEntry
	// would be released here using
	// IoReportResourceUsage
}


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产99精品视频| 久久精品人人做人人综合| 色一情一乱一乱一91av| 9人人澡人人爽人人精品| 99久久精品费精品国产一区二区| 国产精品中文字幕日韩精品| 国产一区二区精品久久| 国产一区二区三区四| 懂色av中文字幕一区二区三区| 国产成人精品综合在线观看 | 一个色妞综合视频在线观看| 最新热久久免费视频| 亚洲欧美自拍偷拍色图| 亚洲视频1区2区| 亚洲午夜久久久久中文字幕久| 亚洲成a人在线观看| 强制捆绑调教一区二区| 韩国三级中文字幕hd久久精品| 国产一区二区剧情av在线| 福利电影一区二区| 色美美综合视频| 91精品国产综合久久婷婷香蕉| 日韩欧美一级精品久久| 国产欧美一区二区三区在线老狼 | 日本女人一区二区三区| 美国欧美日韩国产在线播放| 国产成人av电影在线播放| 91香蕉视频在线| 欧美日韩国产乱码电影| 精品粉嫩aⅴ一区二区三区四区| 久久久久成人黄色影片| 亚洲人成网站影音先锋播放| 婷婷综合另类小说色区| 精品一二线国产| 色综合久久久久综合体桃花网| 欧美色涩在线第一页| 久久亚洲私人国产精品va媚药| 国产精品久久久久久亚洲伦| 亚洲电影一区二区三区| 国内精品在线播放| 色综合天天综合色综合av| 宅男在线国产精品| 国产精品嫩草99a| 天堂久久一区二区三区| 成人理论电影网| 3atv在线一区二区三区| 国产日韩高清在线| 午夜国产精品影院在线观看| 福利电影一区二区| 91精品在线免费| 中文字幕在线一区二区三区| 日韩经典中文字幕一区| 成人黄色av网站在线| 3d成人动漫网站| 亚洲天堂久久久久久久| 韩国视频一区二区| 欧美视频在线一区| 国产精品毛片无遮挡高清| 奇米在线7777在线精品 | 国产欧美综合色| 日韩国产一二三区| 91小宝寻花一区二区三区| 久久亚洲精华国产精华液| 亚洲成人免费看| 99精品久久99久久久久| 久久亚洲影视婷婷| 婷婷久久综合九色综合绿巨人 | 欧美中文字幕一二三区视频| 337p粉嫩大胆噜噜噜噜噜91av | 免费在线观看日韩欧美| 色婷婷久久99综合精品jk白丝| 久久综合色之久久综合| 丝袜美腿成人在线| 色婷婷国产精品综合在线观看| 久久亚区不卡日本| 免费观看一级特黄欧美大片| 欧美在线不卡视频| 国产精品国产三级国产| 国产在线精品一区二区夜色| 欧美日韩国产在线观看| 亚洲一区在线观看网站| 波多野结衣视频一区| 欧美激情在线看| 国产精品一二三在| 久久综合五月天婷婷伊人| 久久国产精品99精品国产| 3751色影院一区二区三区| 亚洲va欧美va天堂v国产综合| 91福利区一区二区三区| 18成人在线观看| 91亚洲午夜精品久久久久久| 国产精品午夜春色av| 高清久久久久久| 国产丝袜欧美中文另类| 国产精品538一区二区在线| 欧美v国产在线一区二区三区| 免费观看在线综合色| 日韩三区在线观看| 麻豆精品一区二区| 欧美刺激午夜性久久久久久久| 日本成人在线不卡视频| 欧美一区二区视频在线观看2020| 亚洲成人www| 91超碰这里只有精品国产| 首页欧美精品中文字幕| 欧美猛男gaygay网站| 日本不卡视频在线观看| 欧美大片国产精品| 国产精品自在在线| 国产精品国产三级国产普通话三级 | 91麻豆精品国产自产在线| 日本一区中文字幕| 日韩欧美美女一区二区三区| 久久精品国产99| 国产色产综合色产在线视频| 不卡区在线中文字幕| 亚洲美女视频在线| 在线电影国产精品| 韩国精品主播一区二区在线观看| 久久久久久久久蜜桃| k8久久久一区二区三区| 亚洲综合999| 欧美一级黄色录像| 国产超碰在线一区| 亚洲欧洲在线观看av| 欧美日韩中文字幕精品| 麻豆久久久久久久| 中国色在线观看另类| 在线一区二区视频| 麻豆精品新av中文字幕| 国产清纯白嫩初高生在线观看91| 99精品视频在线播放观看| 亚洲成人一区二区| 欧美精品一区二区三区在线 | 欧美中文字幕一区| 精东粉嫩av免费一区二区三区| 国产精品美女久久久久aⅴ国产馆| 色成年激情久久综合| 老色鬼精品视频在线观看播放| 国产农村妇女精品| 欧美色网站导航| 国内精品在线播放| 樱桃视频在线观看一区| 精品久久一区二区| 91丨porny丨最新| 久久精品久久综合| 亚洲视频免费看| 日韩欧美亚洲国产另类| 北条麻妃一区二区三区| 日本不卡在线视频| 亚洲视频中文字幕| 欧美变态tickling挠脚心| 色综合一个色综合| 国产一区二区影院| 亚洲第一主播视频| 国产精品日日摸夜夜摸av| 欧美乱熟臀69xxxxxx| av中文字幕不卡| 国产在线视频不卡二| 一区二区三区在线免费视频| 久久久不卡影院| 正在播放亚洲一区| 972aa.com艺术欧美| 国产九色sp调教91| 日本人妖一区二区| 一级精品视频在线观看宜春院| 久久精品一区四区| 日韩欧美精品在线视频| 欧美亚洲动漫制服丝袜| 国产成人免费9x9x人网站视频| 欧美aaaaa成人免费观看视频| 亚洲人成网站在线| 国产免费成人在线视频| 日韩女优视频免费观看| 欧美色区777第一页| 91啦中文在线观看| 国产成人综合网| 久久国产精品露脸对白| 午夜精品久久久久久久| 亚洲精品自拍动漫在线| 国产精品久久三| 久久久久久久精| 欧美电影免费观看完整版| 欧美二区在线观看| 欧美三级日韩三级| 欧美性淫爽ww久久久久无| 成人午夜视频在线观看| 国产乱码精品1区2区3区| 美国精品在线观看| 青青草97国产精品免费观看 | 亚洲成av人在线观看| 亚洲免费观看高清完整版在线观看熊| 国产喂奶挤奶一区二区三区| 欧美成人bangbros| 欧美本精品男人aⅴ天堂| 欧美videofree性高清杂交| 日韩一级二级三级| 日韩一区二区电影网| 日韩欧美精品在线| 欧美电影免费观看高清完整版在|