学习自:
B站:写驱动的女装大佬 《–从零开始造核弹—windows驱动程序开发(中级篇-课2)》
知识点:
设备的创建、打开、关闭,应用层怎么把请求传到驱动层
实现效果:
控制台程序运行后,驱动的MyCreate函数开始工作 ,在Debug窗口打印了 My Device has be opende
按任意键后驱动调用了MyCleanUp函数和MyClose,分别打印出了这两个函数设置的打印内容
驱动层(SYS)代码:
/**********************驱动程序学习例程************************
* 平台:visual studio 2019
* 功能:创建驱动虚拟设备(驱动端)
* 编写:逆行者
* 日期:2021-01-15
* 更改记录:未更改
******************************************************************/
#include <ntddk.h>
#define DEVICE_NAME L"\\Device\\MyfirstDevice" //定义一个驱动的名字
#define SYM_NAME L"\\??\\MyfirstDevice"//定义一个符号链接
VOID nothing(HANDLE ppid, HANDLE mypid, BOOLEAN bcreate)
{
//回调函数,有程序打开或关闭显示提示信息
DbgPrint("ProcessNotify\n");
}
/*
MyCreate自己定义的驱动设备的派遣函数
pdevice:设备对象
*/
NTSTATUS MyCreate(PDEVICE_OBJECT pdevice, PIRP pirp)
{
NTSTATUS status = STATUS_SUCCESS;
DbgPrint("My Device has be opende\n");
pirp->IoStatus.Status = status; //请求成功
pirp->IoStatus.Information = 0;//信息处理了0字节
IoCompleteRequest(pirp,IO_NO_INCREMENT);//完成请求
return STATUS_SUCCESS;
}
/*
MyClose关闭函数
*/
NTSTATUS MyClose(PDEVICE_OBJECT pdevice, PIRP pirp)
{
NTSTATUS status = STATUS_SUCCESS;
DbgPrint("My Device has be closed\n