写一个最简单的WDM驱动
来源:互联网 发布:d3.js 网络图 编辑:程序博客网 时间:2024/04/29 06:05
虽然能在网上找到很多 所谓Hello World的WDM例子程序,但都含有太多功能性的东西,反而让初学者无所适从,我就有这个体会,现在把我自己的第一个Hello World程序放在这里。
#include "ntifs.h"
//驱动卸载例程,该例程也可以不定义。若不定义该例程驱动可以正常运行,但驱动不能动态卸载,只有重启机器才//能卸载驱动
VOID Unload(IN PDRIVER_OBJECT DriverObject)
{
DbgPrint("Unloaded!/n");
}
NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryString)
{
NTSTATUS status = STATUS_SUCCESS;
DriverObject->DriverUnload = Unload;
DbgPrint("Hello World!/n");
return status;
}
以上就是我的Hello World程序,我们可以用Compuware的DriverMonitor来测试这个驱动,怎么样?当你加载并运行这个驱动是否会显示"Hello World",而卸载该驱动时会显示"Unloaded"呢?
不过我目前还有一个困惑:
DRIVER_OBJECT应该是作为驱动程序在内核中对象,DEVICE_OBJECT应该是物理设备对象或功能设备对象。从面向对象的封装性的角度来讲,应该是在DEVICE_OBJECT对象中有一个MajorFunction数组才对,它描述了设备对象提供的功能,但现在MajorFunction函数却放在了DRIVER_OBJECT对象当中,这很容易让人混淆的。所以目前我都不能确信DRIVER_OBJECT对象中的MajorFunction函数组是否是定义了该驱动程序对象所对应的设备对象DEVICE_OBJECT的功能函数? 希望哪位大虾能指点一翻。
#include "ntifs.h"
//驱动卸载例程,该例程也可以不定义。若不定义该例程驱动可以正常运行,但驱动不能动态卸载,只有重启机器才//能卸载驱动
VOID Unload(IN PDRIVER_OBJECT DriverObject)
{
DbgPrint("Unloaded!/n");
}
NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryString)
{
NTSTATUS status = STATUS_SUCCESS;
DriverObject->DriverUnload = Unload;
DbgPrint("Hello World!/n");
return status;
}
以上就是我的Hello World程序,我们可以用Compuware的DriverMonitor来测试这个驱动,怎么样?当你加载并运行这个驱动是否会显示"Hello World",而卸载该驱动时会显示"Unloaded"呢?
不过我目前还有一个困惑:
DRIVER_OBJECT应该是作为驱动程序在内核中对象,DEVICE_OBJECT应该是物理设备对象或功能设备对象。从面向对象的封装性的角度来讲,应该是在DEVICE_OBJECT对象中有一个MajorFunction数组才对,它描述了设备对象提供的功能,但现在MajorFunction函数却放在了DRIVER_OBJECT对象当中,这很容易让人混淆的。所以目前我都不能确信DRIVER_OBJECT对象中的MajorFunction函数组是否是定义了该驱动程序对象所对应的设备对象DEVICE_OBJECT的功能函数? 希望哪位大虾能指点一翻。
- 写一个最简单的WDM驱动
- 写一个最简单的WDM驱动
- Windows驱动开发WDM (2)- 一个简单的WDM驱动程序
- 一个简单的WDM驱动程序
- 一个最简单的驱动Makefile
- 如何写一个简单的linux驱动
- 如何写一个最简单的WebPart
- 再一次,写一个最简单的.emacs
- 写一个最简单的MBR程序
- 如何写一个最简单的操作系统
- 如何写一个最简单的操作系统
- MFC 写一个最简单的破解补丁
- 自己写一个最简单的bootloader_jz2440
- 自己写一个最简单的bootloader_jz2440
- 如何写一个最简单的MAKEFILE
- WDM模式驱动简单例子
- 一个WDM驱动开发框架
- windows wdm驱动的一个hello world例子
- 11
- 带着心理问题去积极生活
- 修炼一名程序员的职业水准(值得看看)
- Licensing实例(一)
- Web编程中常用的Javascript代码
- 写一个最简单的WDM驱动
- 详解vmware如何增加新空间
- VB掌管WebBrowser访问MSHTML成员一点经验
- 2222222
- WNSO手工杀除
- 过冬
- 跟着感觉走,成为你自己
- HTML标记参考手册
- sdf