当前位置: 首页 > news >正文

派遣函数 - 通过设备链接打开设备

        利用文件IO相关的Wn32API对设备进行“打开”和“关闭”操作。要打开设备,必须通过设备的名字才能得到该设备的柄。前面介绍过,每个设备都有设备名称,如HelloDDK驱动程序的设备名为“Device\\MyDDKDevice”,但是设备名无法被用户模式下的应用程序查询到,设备名只能被内核模式下的程序査询到。

        在应用程序中,设备可以通过符号链接进行访问。驱动程序通过loCreateSymbolicLink函数创建符号链接。HelloDDK驱动程序的设备所对应的符号链接是“\??\HelloDDK"。在编写程序时,符号链接的写法需要稍微改一下,将前面的“\??\”改为“\\.\”。因此符号链接“\??\HelloDDK”就变成了“\\.\HelloDDK”,写成C语言的字符串就是“\\\\.\\HelloDDK"。

        下面的代码演示了如何利用 CreateFile 来打开设备句柄,以及如何利用 CloseHandle
关闭设备句柄。在打开和关闭设备句柄的时候,操作系统内部会创建IRP,并将IRP发送相应的派遣函数中。

#include <windows.h>
#include <stdio.h>int main()
{// 打开设备句柄,会触发IRP_MJ_CREATEHANDLE hDevice =CreateFile(L"\\\\.\\HelloDDK", GENERIC_READ | GENERIC_WRITE,0,												// 非共享NULL,										//没有使用安全描述符OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);											// 没有模板if (hDevice == INVALID_HANDLE_VALUE){printf("Failed to obtain fiel handle to deive:%s with win32 error code: %d\n","MYWDMDevice", GetLastError());return 1;}CloseHandle(hDevice);return 0;
}

http://www.lryc.cn/news/436289.html

相关文章:

  • Vue 2 中的 `$set` 方法详解
  • 掌握Hive函数[2]:从基础到高级应用
  • 水壶问题记录
  • spring综合性利用工具-SpringBootVul-GUI(五)
  • 2024年9月12日(k8s环境及测试 常用命令)
  • 卫生间漏水原因很多,切莫病急乱投医
  • IEEE 802.11a OFDM系统的仿真(续)
  • Linux cut命令详解使用:掌握高效文本切割
  • c++11新特性——endable_shared_from_this
  • 小程序的右侧抽屉开关动画手写效果
  • vue3中el-table中点击图片放大时,被表格覆盖
  • GO学习笔记(4) strconv/time
  • 课程管理系统-数据库-基于MySQL的数据库课程设计
  • 降维打击 华为赢麻了
  • [数据集][目标检测]汽车头部尾部检测数据集VOC+YOLO格式5319张3类别
  • python 生成的代码,需要帮我生成一个直接在一台没有依赖的电脑上运行的 包
  • 【Linux】操作系统与进程
  • 【Linux】 LTG:移动硬盘部署Ubuntu24.04
  • Android的logcat日志详解
  • 【Linux】:信号的保存和信号处理
  • 深入理解Java虚拟机:Jvm总结-Java内存区域与内存溢出异常
  • 跨境电商必备保护账号的4个网络环境设置
  • Python+requests接口自动化测试框架实例教程
  • 【网络安全】DNS重绑定原理详析
  • C语言初识编译和链接
  • TrinityCore环境搭建
  • Proteus 仿真设计:开启电子工程创新之门
  • microchip dspic3一些奇怪问题
  • FinOps原则:云计算成本管理的关键
  • JavaScript之如何优化模板字符串的性能