zoukankan      html  css  js  c++  java
  • Windows API 设备驱动管理与内核通信

        关于驱动和内核的学习介绍,[2]中较为详细。这里只简述。   

    应用程序可以将设备驱动程序加载入内核。可以对已经加载了的设备驱动程序发送请求,进行控制或与内核程序进行通信,传输数据。

    设备管理[1]

    列举设备

    SetupDiCreateDeviceInfoList函数创建一个空的设备信息列表。

    SetupDiGetClassDevsEx函数获取指定类型GUID的所有设备的信息列表。

    SetupDiEnumDevieeInterfaces函数是从已经获取的设备接口列表信息中获取信息并使用结构保存,每调用一次会依次返回一个设备接口的信息。

        通过SetupDiEnumDeviceInterfaces函数所获取的信息还不够丰富,将其作为参数,传递给SetupDiGetDeviceRegistryPropertySetupDiGetDeviceInterfaceDetail等函数,可以获取设备接口信息的细节。

        SetupDiCreateDeviceInfoList分配的内存需要通过Setup Di DestroyDeviceInfoList函数释放内存。

    监控设备的加载和卸载

    注册“设备通知”使用API函数RegisterDeviceNotification

        如果一个驱动程序需要和用户态程序进行通信,需要创建设备对象和符号链接。所创建的符号链接与用户态驱动控制程序使用CreateFile所打开的设备名需对应。

        创建设备对象和符号连接使用函数IoCreateDeviceIoCreateSymbolicLink

    参考

    [1] 精通Windows API 函数、接口、编程实例

    [2] http://www.cnblogs.com/mydomain/category/264964.html

  • 相关阅读:
    Linux系统命令与权限
    有关Linux目录相关内容
    Linux的命令以及基本使用
    操作系统的基本知识与Linux系统简介
    IT知识架构与操作系统简介
    windows下nginx支持php的配置
    提权操作函数
    c++内存中字节对齐问题详解 [ 转载 ]
    STL 容器效率的对比
    C++ 四种类型转换的介绍
  • 原文地址:https://www.cnblogs.com/mydomain/p/1962484.html
Copyright © 2011-2022 走看看