zoukankan      html  css  js  c++  java
  • 其实,驱动开发过程中,多版本操作系统不同内核结构体的支持,不一定需要硬编码

    只要获取指定的内核文件,

    根据内核文件下载到指定的pdb,

    然后通过工具(或者自写代码)导出pdb内的结构体,就可以直接用了,

    程序内部组织两套结构体处理函数,

    第一套:

    程序内置若干常用的版本结构体

    在系统初始化的时候,处理系统版本,

    如果记录已经内置了结构体,

    那么就设置标识,

      1:已经内置了结构体

      2:要使用的对应结构体版本(其实就是系统版本)

    第二套

    当,当前系统版本不存在于内置结构列表中的时候,

    走第二套逻辑,客户端通知云端,当前系统版本,

    然后客户端上报云端,自己需要的结构信息,

    由云端告知客户端所需结构信息,

    客户端解析信息之后,按位做偏移处理

    两套方案需要组合使用,且各有利弊。

    第一套方案:

      优点,实现方便,处理方便,预先准备得也方便。

      缺点,所需平台均需预先准备,能覆盖95%以上主流平台,但是一些小版本平台覆盖不到。

        从18363版开始,微软使用了各种乱七八糟的匿名结构体,导致简单导出内容会出现结构体名称异常。匿名结构体需要特殊处理

    第二套方案:

      优点,覆盖全面,客户端、云端对接好,处理好,问题都能解决。

      缺点,客户端处理逻辑稍微复杂,需要云端支持,如果云端没了,就都没了。

  • 相关阅读:
    如何将PDF转换成word文档
    pdf转换成word教程
    VMware Net 模式网络配置
    多系统引导-refind
    Linux 磁盘分区调整工具
    Centos 8 安装 docker
    Centos 8 安装 gitlab13
    Centos 8 安装压缩版 mysql-8.0.21-el7-x86_64.tar.gz
    CentOS 添加用户并赋予管理员权限
    Centos 7 防火墙(firewall-cmd)添加端口访问
  • 原文地址:https://www.cnblogs.com/suanguade/p/14029351.html
Copyright © 2011-2022 走看看