title: win驱动开发
date: 2019-05-30 21:49:57
tags: win驱动开发
categories: win
win驱动开发
驱动框架 1.0.0
类似C控制台的main函数,windowsDriver的入口函数是DriverEntry
具体是:
NTSTATUS DriverEntry(IN PDRIVER_OBJECT pDriverObject,
IN PUNICODE_STRING pRegistryPath);
-
那个IN是个宏,在预编译的时候就会被替换为空,只是为了让编程人员了解这是个"传入参数",不带出数据.
-
NSTATUS:32位无符号长整形,一般>=0表示正确执行,反之异常.
创建设备对象
NTSTATUS IoCreatDevice(
IN PDRIVER_ObJECT DriverObject,//驱动对象指针
IN ULONG DeviceExtensionSize,//指定驱动程序为设备扩展对象而定义的结构体的大小
IN PUNICODE_STRING DeviceName OPTIONAL,//设备对象名(可选的)
IN DEVICE_TYPE DeviceType,//设比我类型
IN ULONG DeviceCharacteristics,//设备对象的特征
IN BOOLEAN Exclusive,//是否在内核下使用,一般置为TRUE
OUT PDEVICE_OBJECT *DeviceObject//设备对象的地址,结构体的指针的指针
);
-
windows数据类型中以P开头的一般表示指针类型.
-
DeviceName必须是"\Device\设备名"形式.若不指定,会自动分配一个数字
符号链接
创建符号链接
NTSTATUS IoCreateSymbolicLink(
IN PUNICODE_STRING SymbolicLinkName,//符号链接名
IN PUNICODE_STRING DeviceName//设备名
);
通过符号链接打通内核模式和用户模式.
DriverUnload
删除设备对象;
VOID IoDeleteDevice(
IN PDEVICE_OBJECT DeviceObject
)
删除符号链接:
VOID IoDeleteSymbolicLink(
IN PUNICODE_STRING SymbolicLinkName
)
网友评论