博客日历
2025年06月 | ||||||
一 | 二 | 三 | 四 | 五 | 六 | 七 |
26 | 27 | 28 | 29 | 30 | 31 | 1 |
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
存档
2025年03月 2024年
03月 04月 05月 2021年
01月 02月 11月 12月 2020年
02月 03月 04月 05月 06月 07月
09月 2018年
09月 2017年
01月 02月 07月 2016年
01月 04月 07月 08月 11月 12月
2015年
01月 02月 03月 05月 09月 10月
11月 2014年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2013年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2012年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2011年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2010年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2009年
03月 04月 05月 06月 07月 08月
09月 10月 11月 12月
驱动编程.2 最简单的“驱动程序”
//SimpleDriver.c,用了C语言
#include <ntddk.h>
#include <ntddk.h>
VOID SimpleDriverUnload(IN PDRIVER_OBJECT pDriverObject)
{
KdPrint(("2.SimpleDriverUnload()\n"));
//注意KdPrint的格式,是两层括号。
//注意KdPrint的格式,是两层括号。
}
//驱动程序入口函数,由系统进程(System)调用
//pDriverObject是驱动对象
//pRegistryPath是设备服务键的键名Unicode字符串指针
ULONG DriverEntry (IN PDRIVER_OBJECT pDriverObject,
IN PUNICODE_STRING pRegistryPath)
{
KdPrint(("1.DriverEntry()\n"));
KdPrint(("1.%S\n",pRegistryPath->Buffer));
//指定卸载routine
pDriverObject->DriverUnload=SimpleDriverUnload;
return STATUS_SUCCESS;
}
编译之后可以使用Compuware DriverStudio提供的DriverMonitor 来加载或卸载。
加载成功后:
1.可以在设备管理的“非即插即用驱动程序”中看到SimpleDriver
2.可以在HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\看到SimpleDriver
3.在www.sysinternals.com出品的Winobj中可以看到SimpleDriver
4.在DDK中提供的Device Tree中可以看到SimpleDriver
加载成功后:
1.可以在设备管理的“非即插即用驱动程序”中看到SimpleDriver
2.可以在HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\看到SimpleDriver
3.在www.sysinternals.com出品的Winobj中可以看到SimpleDriver
4.在DDK中提供的Device Tree中可以看到SimpleDriver
关于调试信息的查看:
1.DriverMonitor 可以查看
2.www.sysinternals.com出品Dbgview也可以查看
1.DriverMonitor 可以查看
2.www.sysinternals.com出品Dbgview也可以查看
上一篇: 驱动编程.1 驱动程序的编译
下一篇: 驱动编程.3 [转载]WinDBG+VMware=调试内核
分类:Win32/C++ 查看次数:7231 发布时间:2009/12/20 17:12:09