驱动是如何运行的

  • 已我所知
    1.创建一个服务(通过注册表)
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\XXX
    (ps:通过枚举这个表可以得到所有服务 还能知道他们的类型)
    其中GROUP与Start决定了驱动加载的早晚
    若Start相同 则根据在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GroupOrderList顺序驱动
    GROUP的值就是HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GroupOrderList下的键名

    启动Start
    Start:
    0 == 由核心装载器装载 1 == 由I/O子系统装载 2 == 自动启动 3 == 手工启动 4 == 禁止启动
    Start 值分0、1、2、3、4,数值越小就越早启动,SERVICE_BOOT_START(0)是内核刚刚初始化之后,此时加载的都是与系统核心有关的重要的驱动程序,例如磁盘驱动;SERVICE_SYSTEM_START(1)稍晚一些;
    SERVICE_AUTO_START(2)是在登录界面出现的时候开始,如果登录较快,很可能驱动还没有加载就登录进去了;
    SERVICE_DEMAND_START(3)是在需要的时候动态加载;SERVICE_DISABLED(4)是不加载,要加载之前必须把Start值改为小于4的值。

    Type:如下 应用程序一般10(百度),1驱动模块

    /*
    “DisplayName”,字符串值,对应服务名称;
      “Descrīption”,字符串值,对应服务描述;
      “ImagePath”,字符串值,对应该服务程序所在的路径;
      “ObjectName”,字符串值,值为“LocalSystem”,表示本地登录;
      “ErrorControl”,DWORD值,值为“1”;
      “Start”,DWORD值,值为2表示自动运行,值为3表示手动运行,值为4表示禁止;
      “Type”,DWORD值,应用程序对应10,其他对应20。

    类型如下:
    #define SERVICE_KERNEL_DRIVER 0×00000001 //内核模块
    #define SERVICE_FILE_SYSTEM_DRIVER 0×00000002 //文件系统驱动
    #define SERVICE_ADAPTER 0×00000004 //保留
    #define SERVICE_RECOGNIZER_DRIVER 0×00000008 //保留

    以下来自百度
    SERVICE_WIN32_OWN_PROCESS
    0×00000010
    运行于独立进程的服务程序
    SERVICE_WIN32_SHARE_PROCESS
    0×00000020
    被多个进程共享的服务程序。
    若使用了SERVICE_WIN32_OWN_PROCESS 或 SERVICE_WIN32_SHARE_PROCESS且使用LocalSystem帐号来运行该服务程序,则还可以附加使用下面的值:

    含义
    SERVICE_INTERACTIVE_PROCESS
    0×00000100
    该服务可以与桌面程序进行交互操作。
    */

    2.对象管理器生成驱动对象(DriverObject)并传递给DriverEntry(),执行DriverEntry入口函数
    3.创建控制设备对象
    4.创建控制设备符号链接(对RING3可见)
    5.如果是过滤驱动,创建过滤设备对象,绑定
    5.注册分发函数
    6其它初始化动作

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
NVMe(Non-Volatile Memory Express)是一种新型的存储协议,与传统的SATA和SAS协议不同,它是专门为闪存存储器设计的。NVMe驱动程序是用于管理NVMe设备的软件组件,它与操作系统内核交互,通过操作系统提供的接口与应用程序通信。 NVMe驱动运行原理如下: 1. 初始化:NVMe驱动在启动时会初始化硬件设备,并将其加入驱动程序管理的设备列表中。 2. 命令传输:应用程序发送的操作命令被NVMe驱动接收并传输到硬件设备上执行。NVMe驱动会将命令转换为硬件设备可识别的格式,然后将其传输到设备上。 3. 中断处理:硬件设备执行完成后,会向NVMe驱动发送中断信号,表示操作已完成。NVMe驱动会接收中断信号,并通知应用程序操作已完成。 4. 数据传输:当应用程序需要读取或写入数据时,NVMe驱动会将数据从内存传输到硬件设备上,或将数据从硬件设备传输到内存中。 5. 错误处理:当硬件设备出现故障或错误时,NVMe驱动会捕捉到错误并进行相应的处理,例如重新传输命令或发送错误提示。 6. 性能优化:NVMe驱动还可以通过一些性能优化技术来提高存储设备的性能,例如多队列、中断协调和轮询模式等。 总之,NVMe驱动是连接应用程序和NVMe存储设备之间的桥梁,通过管理和传输命令、数据和中断信号,实现了应用程序与NVMe设备的交互。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值