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

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

?? driver.cpp

?? windows2000+ddk 驅動開發例子
?? 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一区二区三区免费野_久草精品视频
www.在线成人| 99re亚洲国产精品| 国产精品国产三级国产普通话三级| 色婷婷av久久久久久久| 免费人成黄页网站在线一区二区| 久久天堂av综合合色蜜桃网| 日本精品一级二级| 国产剧情av麻豆香蕉精品| 亚洲午夜免费视频| 久久九九全国免费| 欧美日韩国产在线观看| 成人h动漫精品| 美国毛片一区二区三区| 洋洋成人永久网站入口| 国产日韩欧美精品电影三级在线| 欧美挠脚心视频网站| www.欧美色图| 国产成人av电影免费在线观看| 日韩和欧美一区二区| 亚洲精品亚洲人成人网| 国产精品久久久久四虎| 久久久久久97三级| 欧美videofree性高清杂交| 欧美视频一区二区在线观看| 国产精品1区2区| 麻豆免费精品视频| 日韩主播视频在线| 亚洲成人综合视频| 亚洲午夜在线观看视频在线| 亚洲另类在线制服丝袜| 国产精品成人免费精品自在线观看| 精品国产三级a在线观看| 欧美军同video69gay| 欧美性猛交一区二区三区精品| 色综合久久综合网97色综合| 91色在线porny| 暴力调教一区二区三区| 成人手机电影网| 国产成人av一区二区三区在线观看| 麻豆精品一区二区av白丝在线 | 亚洲最新视频在线播放| 日韩一区在线播放| 亚洲人xxxx| 亚洲乱码中文字幕| 亚洲午夜在线电影| 日本不卡一区二区| 中文字幕欧美激情| 欧美成人精品福利| 欧美mv和日韩mv的网站| 久久美女艺术照精彩视频福利播放| 日韩美女一区二区三区四区| 欧美大片日本大片免费观看| 精品粉嫩aⅴ一区二区三区四区| 精品不卡在线视频| 国产欧美日本一区二区三区| 中文字幕一区二区三| 一区二区三区在线视频免费| 亚洲成人精品在线观看| 首页综合国产亚洲丝袜| 日本va欧美va瓶| 国产精品99久| 91在线一区二区| 欧美三级中文字幕| 欧美一级艳片视频免费观看| 久久久精品一品道一区| 国产精品国产a| 亚洲综合另类小说| 喷水一区二区三区| 国产高清不卡二三区| 99久久免费国产| 欧美日韩五月天| 欧美一二区视频| 国产精品你懂的在线欣赏| 亚洲精品日韩一| 天堂一区二区在线免费观看| 国产在线精品不卡| 色老头久久综合| 欧美成人免费网站| 不卡免费追剧大全电视剧网站| 麻豆传媒一区二区三区| 国产91精品一区二区麻豆网站| jlzzjlzz亚洲日本少妇| 欧美日韩亚洲不卡| 久久久久久久久蜜桃| 亚洲激情中文1区| 日本美女一区二区| 成人黄色软件下载| 9191成人精品久久| 欧美国产视频在线| 日韩中文字幕av电影| 成人综合婷婷国产精品久久免费| 日本高清无吗v一区| 亚洲精品在线一区二区| 亚洲免费av高清| 国产一二精品视频| 欧美日韩在线精品一区二区三区激情 | 丁香激情综合五月| 欧美精品乱码久久久久久按摩 | 成人av综合在线| 日韩一区二区三区在线| 中文字幕在线视频一区| 蜜桃精品在线观看| 91国偷自产一区二区使用方法| 欧美哺乳videos| 亚洲成人动漫av| 不卡av免费在线观看| 精品av综合导航| 日本三级韩国三级欧美三级| 色综合久久综合中文综合网| 久久精品亚洲精品国产欧美| 日韩高清中文字幕一区| 色综合咪咪久久| 国产精品国产精品国产专区不蜜| 久久99国内精品| 91精品国产综合久久久久久漫画 | 色一区在线观看| 国产精品素人视频| 国产自产2019最新不卡| 欧美一区二区三区四区五区| 亚洲精品国产精品乱码不99| 成人一区在线观看| 国产农村妇女毛片精品久久麻豆| 日本成人在线一区| 欧美日韩国产区一| 亚洲一级二级三级| 91精品1区2区| 亚洲欧美成aⅴ人在线观看| 成人一级片网址| 国产欧美1区2区3区| 国产成人精品网址| 久久综合九色综合欧美亚洲| 蜜臀a∨国产成人精品| 欧美男同性恋视频网站| 午夜精品久久久久久久99樱桃| 色噜噜狠狠成人中文综合| 亚洲一区中文日韩| 欧美性生活影院| 亚洲电影视频在线| 欧美日韩黄色一区二区| 日韩女优av电影| 亚洲免费伊人电影| 色综合天天天天做夜夜夜夜做| 亚洲色图欧洲色图婷婷| 色94色欧美sute亚洲线路一ni | 麻豆精品一区二区综合av| 91精品国产高清一区二区三区| 亚洲高清免费在线| 91麻豆精品国产91久久久| 欧美aa在线视频| 精品国产第一区二区三区观看体验| 精品一区二区日韩| 久久久综合九色合综国产精品| 国产在线麻豆精品观看| 国产性做久久久久久| 99久久精品国产毛片| 亚洲精品欧美在线| 欧美日韩一级二级三级| 日本aⅴ亚洲精品中文乱码| 欧美mv和日韩mv国产网站| 国产成人av一区二区三区在线| 一区在线中文字幕| 欧美日韩国产大片| 极品少妇一区二区三区精品视频| 久久久久高清精品| 97超碰欧美中文字幕| 亚洲高清免费观看| 精品日韩欧美在线| 成人av中文字幕| 亚洲成人免费av| 国产日韩欧美a| 欧美日韩综合在线免费观看| 美女精品自拍一二三四| 国产精品伦理一区二区| 欧美日韩国产综合一区二区三区| 狠狠色伊人亚洲综合成人| 亚洲欧洲国产专区| 欧美日韩大陆一区二区| 国产高清不卡二三区| 一二三区精品视频| 精品国产不卡一区二区三区| av亚洲精华国产精华精华| 日韩av一级片| 国产精品国产a| 日韩欧美精品在线视频| 91丨国产丨九色丨pron| 蓝色福利精品导航| 亚洲伦理在线精品| 久久久久国产精品麻豆ai换脸| 在线看一区二区| 经典三级一区二区| 亚洲风情在线资源站| 国产精品女主播av| 日韩三级在线观看| 色老汉一区二区三区| 国产精品亚洲一区二区三区在线 | 国产高清不卡一区二区| 亚洲成国产人片在线观看| 中文字幕精品三区| 日韩欧美一级精品久久| 91豆麻精品91久久久久久|