创建设备例程

本文详细介绍了如何在Windows驱动程序中创建设备,包括创建设备名称、设备本身及符号链接。关键步骤涉及IoCreateDevice函数,解释了其七个参数的含义与用法,如指定驱动对象、设备扩展大小、设备名等。通过示例代码展示了创建过程,并指出在设置设备对象为内核模式使用时,避免使用系统默认值的错误。

昨天写了最最简单的驱动,一个c文件,一个makefile,一个Sources,就行了,今天要向C文件中添加更多的东西,首先第一就是设备创建。

设备创建很简单,第一步,创建设备名称,第二步,创建设备,第三部创建符号链接。当然其中最重要的一个函数就是创建设备IoCreateDevice()了。总共七个参数,第一个是DriverObject,驱动对象的指针。第二个DeviceExtensionSize,指定设备扩展的大小。第三个DeviceName,设置设备对象的名字。第四个DeviceType,用FILE_DEVICE_UNKNOWN。第五个DeviceCharacteristics,设置设备对象的特征,为0。第六个Exclusive,设置设备对象是否为内核模式下使用,设为TRUE(犯了个错误,用了系统直接给的true,结果出错了),最后一个是DeviceObject,输出参数,返回这个设备对象的地址(记得是地址哦,前面有&)。用CreateDevice函数来封装

NTSTATUS CreateDevice (IN PDRIVER_OBJECT pDriverObject)

{

         NTSTATUS status;

         PDEVICE_OBJECT pDevObj;/*用来返回创建设备*/

 

         //创建设备名称

         UNICODE_STRING devName;

         UNICODE_STRING symLinkName;

         RtlInitUnicodeString(&devName,L"\\Device\\yjxDDK_Device");/*对devName初始化字串为 "\\Device\\yjxDDK_Device"*/

 

         //创建设备

         status = IoCreateDevice( pDriverObject,0,&devName,FILE_DEVICE_UNKNOWN,0, TRUE,&pDevObj);//最后一个为得到的设备对象

         if (!NT_SUCCESS(status))

                  return status;

 

         pDevObj->Flags |= DO_BUFFERED_IO;

         //创建符号链接

        

         RtlInitUnicodeString(&symLinkName,L"\\??\\ddd");

         status = IoCreateSymbolicLink( &symLinkName,&devName );

         if (!NT_SUCCESS(status))

         {

                  IoDeleteDevice( pDevObj);

                  return status;

         }

         return STATUS_SUCCESS;

}


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值