最简单的一个驱动

//第一个驱动文件的完整源码C语言格式.非常的简单.入门必看
//以下为:引用DDK驱动默认头文件
#include <ntddk.h>  //ntddk.h 是VC头文件 你可以理解为VB模块
//驱动内部名称和 符号连接名称
#define DEVICE_NAME L "Device\\简单驱动" //Driver Name  符号连接名称
#define LINK_NAME L "DOSDEVICES\\简单驱动" // Link Name  驱动内部名称
 
VOID XieZaiQuDong (  PDRIVER_OBJECT pDriverObject); // XieZaiQuDong自定义函数声明
//以下为: DriverEntry 驱动载入事件
//即VB加载驱动文件的时候 驱动层自动执行如下的代码
NTSTATUS DriverEntry(  PDRIVER_OBJECT pDriverObj,  PUNICODE_STRING pRegistryString)
{
    
UNICOD_STRING ustrLinkName; // 符号连接名称
UNICOD_STRING ustrDevName; // 驱动内部名称
PDEEVICE_BOJECT pDevoj;  // 设备对象
//RtlInitUnicodeString用于给ustrDevName赋值
RetIntUnicodeString(&ustrLinkName,DEVICE_NAME);  // DEVICE_NAME 为值 上面已经定义了 
//FILE_DEVICE_UNKNOWN 是未知设备类型
//IoCreateDevice函数用于创建常规的设备对象.
staus = IoCreateDevice(pDriverObj,0,&ustrLinkName,FILE_DEVICE_UNKNOW,0,FALSE,&pDriverObj);
RetIntUnicodeString(&ustrLinkName,LINK_NAME);
//RtlInitUnicodeString用于给ustrLinkName赋值
status = IoCreateSymbolicLink(&ustrLinkName, &ustrDevName); 
//IoCreateSymbolicLink创建了一个符号连接,以便于和VB用户层通信交流
pDriverObj->DriverUnload=XieZaiQuDong;// 利用驱动对象pDriverObj 指定卸载函数为 XieZaiQuDong
    DbgPrint("VB梦工厂-VB召唤驱动Ring0内核编程");//驱动层输出文字
    DbgPrint("第一个简单驱动测试成功");//驱动层输出文字
    return STATUS_SUCCESS; //DriverEntry函数返回为成功
}
VOID XieZaiQuDong(  PDRIVER_OBJECT pDriverObject) //自定义驱动卸载-停止驱动服务的函数 XieZaiQuDong
{
  
// 删除符号连接名称
UNICODE_STRING strLink;
RtlInitUnicodeString(&strLink, LINK_NAME);//赋值
IoDeleteSymbolicLink(&strLink);    //IoDeleteSymbolicLink 清空释放字符串 变量
//删除驱动设备对象
    IoDeleteDevice(pDevObj->DeviceObject);
DbgPrint("VB梦工厂提示:卸载驱动成功,停止驱动服务 ");//驱动层输出文字 ,告诉我们卸载驱动成功
}
//为简单驱动.sys添加驱动内部名称和符号连接名,是 VB用户层和驱动层通信的基础之一,还有个好处是防止 别人修改你的驱动文件名称.

转载于:https://www.cnblogs.com/xiaoyuyu/archive/2012/11/10/2763957.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值