编写驱动的常用函数

★驱动入口函数(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 // 设备对象的指针
);

posted @ 2013-12-13 11:12  蓝眸妖姬  阅读(466)  评论(0编辑  收藏  举报