编写驱动的常用函数

本文深入探讨了驱动程序的关键操作,包括驱动入口函数、设备对象创建、符号链接创建与删除等,详细解释了每个步骤的功能及其实现方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

★驱动入口函数(DriverEntry)
DriverEntry是加载驱动的函数,由系统进程调用。其原型如下:
NTSTATUS DriverEntry(
IN PDRIVER_OBJECT pDriverObject, // 指向系统创建的驱动对象
IN PUNICODE_STRING pRegistryPath // 指向驱动服务键的键名
);

★创建设备对象(IoCreateDevice)
NTSTATUS IoCreateDevice(
IN PDRIVER_OBJECT DriverObject, // 指向驱动对象
IN ULONG DeviceExtensionSize, // 设备扩展的字节数
IN_OPT PUNICODE_STRING DeviceName, // 设备名称,可以为NULL
IN DEVICE_TYPE DeviceType, // 设备类型
IN ULONG DeviceCharacteristics, // 设备对象的特征
IN BOOLEAN Exclusive; // 设置设备对象是否在内核模式下使用,一般为TRUE
OUT PDEVICE_OBJECT *DeviceObject // 保存创建好的设备对象的地址
);

★创建符号链接(IoCreateSymbolicLink)
NTSTATUS IoCreateSymbolicLink(
IN PUNICODE_STRING SymbolicLinkName, // 设备的符号链接的名称
IN PUNICODE_STRING DeviceName, // 设备名称
);

说明:内核模式下,符号链接以"\??\"开头;用户模式下,符号链接以"\\.\"开头。如C盘:
内核模式:"\??\C:";用户模式:"\??\C:\"。

★删除符号链接(IoDeleteSymbolicLink)
NTSTATUS IoDeleteSymbolicLink(
IN PUNICODE_STRING SymbolicLinkName // 符号链接的名称
);

★删除设备对象(IoDeleteDevice)
VOID IoDeleteDevice(
IN PDEVICE_OBJECT DeviceObject // 设备对象的指针
);

转载于:https://www.cnblogs.com/enjoy-life-everyday/p/3472682.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值