win驱动常用函数


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);
  1. 那个IN是个宏,在预编译的时候就会被替换为空,只是为了让编程人员了解这是个"传入参数",不带出数据.

  2. 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//设备对象的地址,结构体的指针的指针
);
  1. windows数据类型中以P开头的一般表示指针类型.

  2. 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
)

你可能感兴趣的:(win驱动常用函数)