昨天写了最最简单的驱动,一个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;
}

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

被折叠的 条评论
为什么被折叠?



