0环代码

#include <ntifs.h>
#define DEVICE_NAME L"\\Device\\MyDevice"
#define SYMBOL_NAME L"\\??\\MyDevice"void DriverUnload(PDRIVER_OBJECT pobject)
{DbgPrint("Driver Unload Successful!!");if (pobject->DeviceObject){IoDeleteDevice(pobject->DeviceObject);UNICODE_STRING name = {0};RtlInitUnicodeString(&name,SYMBOL_NAME);IoDeleteSymbolicLink(&name);}
}//IRP CREAT FUNCTION
NTSTATUS MyCreat(PDEVICE_OBJECT pobject,PIRP irp)
{NTSTATUS status = STATUS_SUCCESS;//实现简单操作 啥都不干irp->IoStatus.Status = status;irp->IoStatus.Information = 0;IoCompleteRequest(irp,IO_NO_INCREMENT);return status;
}NTSTATUS DriverEntry(PDRIVER_OBJECT pobject,PUNICODE_STRING path)
{DbgPrint("Driver Load Successful!!");NTSTATUS status = STATUS_SUCCESS;PDEVICE_OBJECT pdevice = NULL;UNICODE_STRING devicename = { 0 };RtlInitUnicodeString(&devicename,DEVICE_NAME);//创建设备status = IoCreateDevice(pobject,0,&devicename,FILE_DEVICE_UNKNOWN,0,TRUE,&pdevice);if (!NT_SUCCESS(status)){DbgPrint("IOCreatDevice ERROR!!");return status;}//创建符号链接UNICODE_STRING symname = {0};RtlInitUnicodeString(&symname,SYMBOL_NAME);status = IoCreateSymbolicLink(&symname,&devicename);if (!NT_SUCCESS(status)){DbgPrint("IoCreateSymbolicLink ERROR!!");IoDeleteDevice(pdevice);return status;}//配置派遣函数pobject->DriverUnload = DriverUnload;pobject->MajorFunction[IRP_MJ_CREATE] = MyCreat;//pobject->MajorFunction[IRP_MJ_CLOSE] = MyClose;//pobject->MajorFunction[IRP_MJ_CLEANUP] = MyCleaUp;return status;
}

3环

#include "windows.h"
#include <stdio.h>
int main()
{HANDLE hdevice = NULL;hdevice = CreateFile("\\\\.\\MyDevice",GENERIC_READ | GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);if (hdevice == INVALID_HANDLE_VALUE){printf("Creat File Failed!!");return 0;}system("pause");CloseHandle(hdevice);return 0;
}

WDK驱动开发之路——创建一个设备进行简单交互相关推荐

  1. 九七的Windows内核驱动开发 WIN10-2004+VS2019+WDK驱动开发环境安装及配置

    WIN10-2004+VS2019+WDK驱动开发环境安装及配置 一.定义介绍   本节介绍如何在Windows10系统(2004版本,操作步骤中有如何查看版本)中安装VS2019及WDK开发包,并进 ...

  2. 【Unity】创建一个自己的可交互AR安卓程序

    目录 1 创建一个AR场景 2 配置AR Camera为前置摄像头 3 配置打包场景 4 下载官方提供的InteractiveFaceFilterAssets资源 5 配置AR Face Manage ...

  3. 【嵌入式Linux】嵌入式Linux驱动开发基础知识之总线设备驱动模型

    文章目录 前言 1.驱动编写的三种方法 1.1.传统写法 1.2.总线驱动模型 1.3.设备树驱动模型 2.Linux实现分离:Bus/Dev/Drv模型 2.1.Bus/Dev/Drv模型 2.2. ...

  4. Moblin v2开发环境设置——创建一个新应用程序

    (翻译:徐诚 http://blog.csdn.net/shizhebsys 保留版权) 这里是开始Moblin开发重要起点.本页描述如何创建一个简单的应用程序,并且介绍少数有用的工具帮助你快速启动开 ...

  5. Linux驱动开发中的中间件:设备树

    Linux设备树 设备树的产生是为了解决内核源码的arch/arm目录下代码混乱和臃肿的问题(过去每个厂商出个板子就要提供外设硬件和平台硬件信息,这些信息以.c和.h文件的形式呈现).在使用设备树之后 ...

  6. 点亮 Linux 驱动开发路上的第一个灯

    Linux下的任何外设驱动,最终都是要配置相应的硬件寄存器.前面的文章中介绍了新旧字符设备的驱动开发框架,也介绍了IMX6ULL处理器GPIO的工作原理及配置方法,本篇我们将实际操作一个GPIO,点亮 ...

  7. 基于Cortex-A7架构的嵌入式linux ARM驱动开发<1>——字符设备驱动开发

    一.什么是字符设备 字符设备是 Linux 驱动中最基本的一类设备驱动,字符设备就是一个一个字节,按照字节流进行读写操作的设备,读写数据是分先后顺序的.比如我们最常见的点灯.按键.IIC.SPI, L ...

  8. 移动设备应用程序开发入门一:创建用于设备的 Windows 窗体应用程序并打包进行部署...

    目标:了解如何使用 Visual C# 创建一个简单的 Hello World 应用程序,该应用程序可在 Pocket PC 上运行. 了解如何为应用程序创建随后可部署到智能设备上的 .cab 文件. ...

  9. linux设备驱动程序的编程思路,Linux设备驱动工程师之路——高级字符设备驱动程序...

    高级字符设备驱动在简单字符驱动的基础上添加ioctl方法.阻塞非阻塞读写.poll方法.和自动创建设备文件的功能. 一.重要知识点 1.ioctl ioctl命令:使用4个字段定义一个ioctl命令, ...

最新文章

  1. struts.xml web.xml配置正常,访问action时出现404
  2. 为什么全网 都在说 iOS 开发不行了 ?
  3. 编程之美-连连看游戏设计方法整理
  4. Python老男孩 day15 函数(二) 局部变量与全局变量
  5. cass展点不在原位置_cass展点之步骤及方法
  6. 几个C#关于Html解析的类
  7. 有什么相见恨晚的算法答题套路?【力扣】
  8. 计算机系统的软件配置要求高吗,ERP软件对电脑配置有什么要求?
  9. drawLine()方法画粗线
  10. 泰迪杯特等奖思路(教育平台线上课程用户行为分析(含数据可视化处理))-思路篇
  11. 学习笔记1:迟滞电压比较器
  12. 初学者Apache Solr教程
  13. Web开发的一点心得(二年工作总结版)
  14. 常见的磁盘格式以及它们之间的区别
  15. vue中使用 svg图片
  16. java监听鼠标双击_java鼠标双击事件 java鼠标双击监听
  17. sql语句中不等于的使用
  18. sulley里面Pcapy模块安装容易出错地方
  19. 如何修改vue的网页图标
  20. 实验三 算符优先分析算法的设计与实现

热门文章

  1. 关于set想说的(一)之Set的实现类及必要的方法
  2. javaFx中fxml的键盘事件
  3. 关于AD21中PCB布线中补泪滴 焊盘处如何设计
  4. 共享障碍逐个击破,知识管理显神威
  5. mongodb $inc 加小数_这颜值谁不爱呢?阿斯加特 洛极W3 RGB内存条 开箱评测
  6. 6728. 【2020.06.16省选模拟】T2 战棋游戏
  7. pip 下载速度慢,导致报错:pip._vendor.urllib3.exceptions.ReadTimeoutError……
  8. Sharding-JDBC 实战(史上最全)
  9. 基于Java编写的租房管理软件
  10. 苹果开发者账号官方翻译篇-管理key