编写驱动的常用函数

★驱动入口函数(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