×

驱动开发--汇总

前端技术网 前端技术网 发表于2024-01-19 20:16:12 浏览2423 评论0

抢沙发发表评论

一、硬盘就是硬盘驱动器吗

1.硬盘驱动器简介硬盘驱动器(Hard Disk Driver,HDD)也是微机系统的基本外存设备.与软盘驱动器不同的是,它的磁盘片是硬质合金的,并固定安装在驱动器内部,所以也可统称为硬盘.与软盘相比,它的存储容量要大得多,速度也快得多,而体积也较小.3"软盘的容量为1.44MB,而目前PC机硬盘容量在40GB到160GB.目前市面上硬盘的主流品牌为昆腾(Quantum),希捷(Seagate),钻石(Maxtor),西部数据(Westdata)和IBM等.硬盘子系统包括硬盘驱动器(内含硬盘),驱动程序和硬盘接口.硬盘的控制器(HDD Controller)做在硬盘内部,而接口集成在主板上.硬盘的驱动程序包含在系统BIOS程序中.硬盘的构成和工作原理与软驱相仿,它以自己专用的微处理器作为控制器,它的内部ROM固化了控制软件,用来实现加电时的自我诊断,运行状态检测,主轴电机的转速调节和对磁头的位置控制等功能.硬盘驱动器内部硬件主要由电路板和头盘组件HDA(Head Disk Assemblly)构成.(如图6.4-1所示) 6.4-1硬盘的内部结构图硬盘按其盘片直径大小可分为5.25,3.5,2.5和1.8英寸等多种,按其接口类型分有IDE接口及SCSI接口等多种,目前使用最多的是IDE接口的3.5英寸硬盘. IDE接口来自IBM AT机,其信号定义与AT机的总线相似,因此也叫AT总线(AT BUS).IDE接口的硬盘连接电缆为40线排线电缆,其中红色为1号线,如图7-6所示.在一个IDE接口上连接两个硬盘,一个硬盘上的跳线应设置为"Master"状态,另一个硬盘上的跳线应设置为"Slave"状态.硬盘的电源线为4线,分别为+12V(黄色),地(黑色两根)和+5V(红色),12V供给电机,5V供给电路元件. 2.硬盘的接口技术接口技术,硬盘接口一直是人们关心的技术,随着微机其它配件(如CPU,内存,显示等子系统)性能的大步迈进,硬盘的接口传输率越来越体现出它在整个微机系统的瓶颈效应,硬盘接口越来越受到人们的关注.(1) IDE接口 IDE(Intelligent Device Electronics)即智能设备电子接口,是目前PC机普遍采用的最基本硬盘接口.IDE接口的40个引脚除了对主板上的ISA总线的信号进行必要控制之外,基本上是原封不动地送往硬盘驱动器,所以IDE接口也常被称为ATA接口. PC主板通常提供两个IDE接口,每个ID可连接两个IDE设备,采用一条40线扁平电缆传送控制和数据信号.目前使用的IDE接口有ATA(或Ultra DMA)33,66,100等新型高速接口.(2) SCSI接口类型 SCSI(Small Computer System Interface)即小型计算机系统接口,是一种用于高速外设的外部接口适配器卡,也称硬盘协处理器卡(Disk Coprocessor Board),通常也叫做"Scuzzy"卡.在计算机外设接口尤其是外存储设备接口方面,SCSI接口始终占据着高贵地位,这不仅是由于它的先进技术性能,也是由于它的高价位. SCSI的意义是小型计算机系统接口,它是做在一个专门的系统扩展卡上.SCSI开发于70年代末,至今已有SCSI-1,SCSI-2以及SCSI-3等多种. SCSI-1是第一个版本,异步数据传输率为3MB/S,同步数据传输率为5MB/S.采用的是特殊的25针的SCSI接口. SCSI-2最初称为Fast SCSI,8位并行数据传输,数据传输率提高到10MB/S,可连接7个外设.标准接口为50线,信号有差分方式和单端方式两种.SCSI-2用于硬盘,CD-ROM驱动器和扫描仪等设备. SCSI-3也称为Ultra SCSI,数据传输率达到20MB/S,若使用16位传输模式,则数据传输率可高达40MB/S.SCSI-3增加为一个68针接口,用于将8位数据增加到32位数据. Ultra 2 SCSI发表于97年,采用低电压差分技术,使用16位传输模式,数据传输率达到80MB/S.Ultra 160/m SCSI发表于98年,采用低电压差分技术,并且每个时钟可发送两位数据,数据传输率达到160MB/S.98年以后生产的硬盘开始采用此类接口. 3.FAT16,FAT32,NTFS Windows所用的分区格式主要有FAT16,FAT32,NTFS等,其中几乎所有的操作系统都支持FAT16.FAT(File Allocation Table)是"文件分配表"的意思.顾名思义,就是用来记录文件所在位置的表格,它对于硬盘的使用是非常重要的,假若丢失文件分配表,那么硬盘上的数据就会因无法定位而不能使用了.不同的操作系统所使用的文件系统不尽相同,在个人计算机上常用的操作系统中,MS-DOS 6.x及以下版本使用FAT16;OS/2使用HPFS;Windows NT/XP/2000/2003则使用NTFS;而MS-DOS 7.10及其以上版本均支持FAT32. FAT16使用了16位的空间来表示每个扇区(Sector)配置文件的情形,故称之为FAT16.FAT16由于受16位的限制,因此每超过一定容量的分区之后,它所使用的簇(Cluster)大小就必须扩增,以适应更大的磁盘空间.所谓簇就是磁盘空间的配置单位,就象图书馆内一格一格的书架一样.每个要存到磁盘的文件都必须配置足够数量的簇,才能存放到磁盘中. FAT32使用了32位的空间来表示每个扇区(Sector)配置文件的情形.利用FAT32所能使用的单个分区,最大可达到2TB(2048GB),而且各种大小的分区所能用到的簇的大小,也是恰如其分,上述两大优点,造就了硬盘使用上更有效率.与分区与簇的大小汇总如表6.4-2所示.表6.4-2 FAT16与FAT32分区与簇的大小汇总表分区大小 FAT16簇大小 FAT32簇大小 16MB-32MB 2KB不支持 32MB-127MB 2KB 512bytes 128MB-255MB 4KB 512bytes 256MB-259MB 8KB 512bytes 260MB-511MB 8KB 4KB 512MB-1023MB 16KB 4KB 1024MB-2047MB 32KB 4KB 2048MB-8GB不支持 4KB 8GB-16GB不支持 8KB 16GB-32GB不支持 16KB 32GB以上不支持 32KB NTFS是"新技术文件系统"的缩写.微软推出NTFS文件系统就是为了弥补FAT文件系统的一些不足,其中最大的改进是容错性和安全性能.NTFS可以自动地修复磁盘错误而不会显示出错信息.Windows 2000向NTFS分区中写文件时,会在内在中保留文件的一份拷贝,然后检查向磁盘中所写的文件是否与内存中的一致.如果两者不一致,Windows就把相应的扇区标为坏扇区而不再使用它(簇重映射),然后用内存中保留的文件拷贝重新向磁盘上写文件.如果在读文件时出现错误,NTFS则返回一个读错误信息,并告知相应的应用程序数据已经丢失.NTFS分区对用户权限作出了非常严格的限制,每个用户都只能按照系统赋予的权限进行操作,任何试图超越权限的操作都将被系统禁止,同时它还提供了容错结构日志,可以将用户的操作全部记录下来,从而保护了系统的安全.另外,NTFS还具有文件级修复及热修复功能,分区格式稳定,不易产生文件碎片等优点,这些都是其他分区格式所不能企及的.这些优点进一步增强了系统的安全性. 4.硬盘的常用术语及技术(1)主轴转速主轴转速是硬盘内部传输率的决定因素之一,也是区别硬盘档次的重要标志.硬盘的转速多为5400rpm(转/分钟),7200rpm和10000rpm.7200转的硬盘已经成为主流,但5400rpm的硬盘仍具有性价比高的优势.在购买硬盘的时候会发现,硬盘的速度每提升一个档次,其价格往往会增加20%左右,其性能也会有所提高.(2)缓存缓存是硬盘与外部总线交换数据的场所.硬盘的读过程是经过磁信号转换成电信号后,通过缓存的一次次填充与清空,再填充,再清空才一步步地按照PCI总线周期送出去,所以缓存的作用不容小视,缓存的容量与速度直接关系到硬盘的传输速度.缓存为静态存储器,与内存(动态存储器)不同,无须定期刷新,它的容量有128KB,256KB,512KB,甚至2MB等规格.缓存是一些高速的DRAM,类型为EDO DRAM或SDRAM,有写通式和回写式两种.前者在读硬盘时,系统先检查请求指令,看所要的数据是否在缓存里有,若有则称为命中,缓存就送出相应的数据,不必再访问磁盘中的数据了,这样可以明显改善性能;而写通式为只读数据.现在多数硬盘使用的都是可读写数据的回写式高速缓存,它比写通式缓存更能提高性能.缓存也是购买硬盘的一个主要的依据,现在主流硬盘的缓存一般都大于512KB,甚至达到2MB.如Maxtor和IBM的新款硬盘中都有采用2MB缓存的产品,性能较以前有着明显的提高.(3)平均寻道时间平均寻道时间(Average Seek Time)是指磁头移动到数据所在磁道需要的时间,这是衡量硬盘机械能力的重要指标,一般在5ms~13ms之间.平均潜伏时间(Average Latency Time)是指相应数据所在的扇区转到磁头下的时间,一般在1ms~6ms之间.平均访问时间(Average Access Time)则是平均寻道时间与平均潜伏时间之和,它是最能够代表硬盘找到某一数据所用的时间的了.(4)数据传输率数据传输率分为外部传输率(External Transfer Rate)和内部传输率(Internal Transfer Rate).通常也称外部传输率为突发数据传输率(Burstdata Transfer Rate)或接口传输率,是指从硬盘的缓存中向外输出数据的速度.目前,采用UDMA/66技术的外部传输率已经达到了66.6MB/s;内部传输率也称最大或最小持续传输率(Sustained Transfer Rate),是指硬盘在盘片上读写数据的速度,现在的主流硬盘大多在20MB/s到30MB/s之间.由于硬盘的内部传输率要小于外部传输率,所以内部传输率的高低才是评价一个硬盘整体性能的决定性因素,因此只有内部传输率才可以作为衡量硬盘性能的真正标准.一般来说,在硬盘的转速相同时,单碟容量越大则硬盘的内部传输率越大;在单碟容量相同时,转速高的硬盘内部传输率也高;在转速与单碟容量相差不多的情况下,新推出的硬盘由于处理技术先进,所以它的内部传输率也会较高.

二、深入浅出windows驱动开发的目录

向内核世界说一声:hello,我来了。如果你是一个初学者,并对这个世界充满好奇心,请从这一章开始,我们一起打招呼~

驱动开发--汇总

第1章 Hello World驱动 1

1.1从Hello World开始 2

1.1.1 HelloDRIVER 4

1.1.2代码解释 8

1.1.3驱动程序的编译和安装 11

1.1.4查看我们的驱动 14

驱动开发--汇总

1.2虚拟环境 15

1.2.1使用虚拟环境进行驱动开发 15

1.2.2使用VMware虚拟机 15

1.2.3目标机设置 16

1.2.4 Virtual PC虚拟机 18

1.3小结 19

如何在规范的商业环境中,开发成功而有效的驱动软件?驱网站长马勇(ZnSoft)将向你娓娓道来。你会学到这些内容:建立一个简单而有效的开发、调试环境;64位环境下的内核编程技巧;如何发布你的驱动软件。

第2章商业驱动开发技术 20

2.1建立开发调试环境 21

2.1.1 SVN环境 21

2.1.2创建工程,导入SVN 23

2.1.3建立符号服务器 25

2.1.4用符号调试 27

2.2 64位驱动开发技术 34

2.2.1 64位驱动编写技术 35

2.2.2 32位应用程序与64位驱动混合模式 36

2.3驱动程序的发布与测试 42

2.3.1驱动程序签名 42

2.3.2驱动程序测试 46

2.3.3 WHQL 49

2.4小结 50

WDF是目前最新的驱动编程框架。当很多内核程序员还紧抱WDM的巨大佛脚时,千万要记住,WDF已是大势所趋。本章介绍了WDF最重要的几个概念,并进行了一定程度的深度挖掘。对于WDF框架的三大核心模型:对象模型、事件模型、PNP/Power模型,本章作了重点讲述。

第3章 WDF概述 51

3.1主要特点 52

3.2框架视图 53

3.3兼容性 55

3.4对象模型 56

3.4.1对象和句柄 59

3.4.2引用计数 60

3.4.3上下文空间 61

3.4.4 PME接口 67

3.4.5 DDI接口 69

3.4.6父子关系 76

3.4.7对象同步 77

3.5驱动对象和设备对象 78

3.5.1驱动对象 78

3.5.2驱动入口DriverEntry 81

3.5.3设备对象 84

3.5.4创建设备对象 85

3.5.5设备栈 86

3.6 IO模型 88

3.6.1 IO目标对象 88

3.6.2 IO目标对象的细节 90

3.6.3安全的缓冲区 93

3.6.4内存对象(一) 96

3.6.5内存对象(二) 98

3.6.6框架和IO请求 102

3.6.7更详细的处理流程 103

3.6.8 IO请求参数 105

3.6.9队列 107

3.6.10创建IO请求 110

3.7 PNP和电源模型 112

3.8小结 115

使用WDF框架开发USB驱动,方便且简单。本章首先总体上从硬件和软件两个方面介绍USB相关知识点,包括设备的电气特性、总线结构、USB驱动类型以及类驱动。编程方面,从USB设备初始化、数据操作以及设备控制等几个方面来讲解,透彻并且翔实。

第4章 WDF USB设备驱动开发 116

4.1 USB设备硬件结构 117

4.1.1主从结构 117

4.1.2硬件拓扑 118

4.1.3 USB中断 119

4.2 USB软件结构 120

4.2.1总线驱动 120

4.2.2系统类驱动 121

4.2.3功能驱动 122

4.2.4父驱动与混合设备 122

4.2.5过滤驱动 125

4.2.6 USB驱动栈、设备栈 125

4.3内核开发 127

4.3.1设备驱动 127

4.3.2入口函数 128

4.3.3 USB描述符 129

4.3.4描述符介绍 130

4.3.5汇总举例 133

4.3.6读取描述符 135

4.3.7初始化 137

4.3.8设备初始化函数 138

4.3.9创建设备对象 141

4.3.10设备命名、符号链接 143

4.3.11启动设备 147

4.3.12创建队列 156

4.3.13停止设备/反初始化 158

4.4数据I/O操作 160

4.4.1 USB控制命令 160

4.4.2构造并发送控制命令 162

4.4.3读USB中断端口 163

4.4.4连续读操作 165

4.4.5数据处理函数 166

4.4.6中断端口的效率 167

4.4.7读/写批量端口 168

4.5设备控制 171

4.5.1关于I/O Target对象 171

4.5.2获取USB版本 172

4.5.3管道重置 174

4.5.4设备重置 176

4.5.5管道中止与终止 177

4.6用户程序 179

4.6.1内核读/写 179

4.6.2控制命令 179

4.7小结 180

1394俗称火线。大伙平时最多接触它的地方大概是内核调试时,借助1394卡进行双机互联。本章首先从硬件方面介绍了1394的知识,它的总线结构很特别,极具可扩性,能非常方便地在各种类型的1394设备之间建立数据链路。内核编程方面,本章重点讲解了数据通信相关知识,分为异步通信和同步通信两种方式,颇为复杂,相对难于掌握,但套路是现成的,变化的东西不多,可以熟能生巧。本章最后介绍了1394双机互联的原理,有兴趣的读者可参考之。

第5章 WDF 1394驱动开发 181

5.1 1394一席谈 182

5.1.1版本情况 183

5.1.2电源特性 183

5.1.3 1394卡 183

5.1.4总线拓扑 184

5.2发送请求 186

5.2.1同步方式 187

5.2.2异步方式 189

5.2.3对WDM的回忆 191

5.3总线重置与计数 193

5.3.1总线重置 193

5.3.2设置重置回调 193

5.3.3计数更新 194

5.4 PNP操作 195

5.5异步通信 196

5.5.1地址范围 197

5.5.2异步读 200

5.5.3异步写 201

5.5.4异步锁请求 202

5.5.5数据流 203

5.6等时通信 204

5.6.1申请带宽 205

5.6.2释放带宽 206

5.6.3等时通道 206

5.6.4资源句柄 207

5.6.5缓冲区挂载 210

5.6.6缓冲区解挂 211

5.6.7开始传输 211

5.6.8停止传输 212

5.6.9其他等时操作 213

5.7其他操作 213

5.7.1设备配置 213

5.7.2获取控制器信息 214

5.7.3速度信息 215

5.7.4厂商自定义命令 216

5.8安装与测试 216

5.8.1 1394虚拟设备 216

5.8.2创建虚拟设备 218

5.8.3示例代码 219

5.8.4安装与测试 221

5.9小结 222

内核天生适合于C语言编程,但越来越多的内核项目,规模达到10数万的规模。在这种情况下,人们不由地会将目光投向优雅的C++语言。总体上说,C和C++是至亲好友,内核中使用C++本不应有什么大问题,但有几个暗礁潜伏已久,不小心的程序员,你可千万不要触礁。

第6章内核驱动C++编程 223

6.1驱动中的类 224

6.1.1一个简单的例子 224

6.1.2 new/delete 225

6.1.3 extern C 227

6.1.4全局/静态变量 228

6.1.5栈的忧虑 230

6.2类封装的驱动程序 233

6.2.1寻找合适的存储所 233

6.2.2类方法与事件函数 235

6.2.3 KMDF驱动实现 236

6.2.4 WDM驱动实现 237

6.3多态 238

6.3.1基类、子类 238

6.3.2实现多态 239

6.3.3测试 241

6.4小结 241

使用WDF框架编写的驱动程序,在测试和调试的时候,有特殊的工具。本章介绍了目前所知的三个,它们分别是:Windbg扩展调试命令、WDFTester测试工具、WDFVerifier测试工具。本章将以示例方式,介绍这些工具的使用。

第7章 WDF驱动测试 242

7.1 WDF错误 243

7.1.1实例分析 245

7.1.2 USB错误 246

7.2 WDF扩展调试命令 247

7.3 WDFTester 254

7.3.1 WDFFiTester 254

7.3.2使用 256

7.3.3 WDFCallTracer 260

7.4 WDFVerifier 263

7.4.1识别KMDF驱动 263

7.4.2使用与介绍 265

7.5小结 266

SoftIce渐行渐远之后,Windbg成为内核调试的第一利器。使用Windbg的最大难点是命令繁多,参数复杂。本章以总结归纳的形式,介绍了作者在工作中经常用到的几大类调试命令,并以实例形式一一介绍。作者根据个人经验所作的分类,未能全备,但能够保证的是,所有实例翔实而可靠,可以作为可信的参考。

第8章调试命令详解 267

8.1概述 268

8.1.1寻求帮助 269

8.1.2 DML语言 270

8.1.3基本信息 271

8.1.4基本设置 272

8.1.5格式化显示 273

8.1.6开始调试 273

8.2符号与源码 276

8.2.1模块列表 277

8.2.2模块信息 279

8.2.3符号路径 280

8.2.4符号加载 283

8.2.5符号搜索 285

8.2.6源码命令 287

8.3进程与线程 289

8.3.1进程命令 289

8.3.2线程命令 292

8.3.3异常与事件 296

8.3.4局部变量 300

8.3.5显示类型 301

8.4断点 301

8.4.1软件断点 301

8.4.2硬件断点 303

8.4.3其他操作 303

8.5内存命令 304

8.5.1查看内存 304

8.5.2内存信息 307

8.5.3其他命令 311

8.6小结 312

相信大多数人在学习内核开发的时候,都问过这样一个问题:内核驱动怎么向用户程序发送消息,或者如何调用Win32函数。用户程序和内核同步,是一个基本而重要的知识,本章介绍了三种主要的实现方式。至于内核是否可以调用Win32函数,读一读本章开篇的话,你就有答案了。

第9章内核同步 313

9.1关于内核同步 314

9.2内核事件同步 316

9.2.1原理 316

9.2.2用户程序 318

9.2.3内核实现 319

9.3 IRP同步 320

9.3.1用户程序 321

9.3.2内核实现 323

9.4 WMI同步 325

9.5数据缓冲区同步 326

9.6反向调用 328

9.7小结 330

微软最新的音视频编程框架即AVStream框架,不管从什么方面来说,音视频编程都是一个很小众的领域。AVStream框架极其复杂,个人看法是掌握的难度超过了WDF。本章介绍了AVStream框架的各种基本知识点,并以实例讲解一个内核音频过滤器在系统中是如何工作的。

第10章音频驱动开发 331

10.1简介 332

10.1.1音频模块架构 332

10.1.2系统中的音频设备 334

10.2 AVStream对象 338

10.2.1设备对象 339

10.2.2 Filter工厂和Filter对象 340

10.2.3 Pin工厂和Pin对象 342

10.2.4 Node对象与Connection结构体 343

10.3 AVStream描述符 346

10.3.1描述符简介 346

10.3.2描述符示例 347

10.3.3分发函数表 349

10.3.4自控表 349

10.3.5自控表示例 351

10.4代码讲解 355

10.4.1入口函数 355

10.4.2设备分发函数 357

10.4.3 Filter与Pin分发函数 358

10.4.4创建和删除 359

10.4.5数据处理 360

10.4.6数据格式 362

10.5自控表函数 364

10.5.1事件函数 364

10.5.2属性函数 366

10.5.3方法函数 367

10.5.4用户接口 367

10.6硬件操作 370

10.6.1数据DMA 370

10.6.2 AVStream中的DMA实现 371

10.6.3谈谈ISR 374

10.7安装与测试 376

10.7.1安装 376

10.7.2测试工具 376

10.8小结 379

ASIO音频驱动具有两个非常亮眼的优点:低延迟、多通道。低延迟能够达到几毫秒,使得最灵敏的耳朵也难也察觉;多通道则让通常的双声道、6.1声道等一齐歇菜,而可以很轻松地让多达十几、几十个声道同时工作,在进行高级音频编辑时,这非常重要。

第11章 ASIO虚拟声卡 380

11.1引言 381

11.2关于ASIO 383

11.3 ASIO用户驱动 384

11.3.1 COM接口 384

11.3.2安装与卸载 386

11.3.3 IASIO接口 387

11.3.4技术核心 390

11.3.5计算延迟 392

11.4内核驱动实现 393

11.4.1同步 393

11.4.2原理 393

11.4.3实现 396

11.5 ASIO音频软件 396

11.6小结 397

从本章开始的三章内容,讲的都是“驱动安装”这个话题。在本章中,介绍了系统中和驱动安装有关的各种系统模块。读者通过阅读本章后,至少能够掌握这两个基本知识:系统如何识别一个旧设备,并为它加载合适的驱动文件;系统如何发现一个新设备,并完成驱动安装。

第12章设备驱动安装入门 399

12.1基础知识预介 400

12.1.1设备类型 400

12.1.2设备实例ID 401

12.1.3驱动加载和安装 403

12.2安装模块 404

12.2.1内核PNP管理器 405

12.2.2用户PNP管理器 406

12.2.3安装接口函数(Setup API) 408

12.2.4配置管理器接口(CfgMgr API) 410

12.2.5类安装器(Class Installers) 410

12.2.6类协安装器(Class Co-Installers) 410

12.2.7设备协安装器(Device Co-Installers) 411

12.2.8驱动包(Driver Package) 412

12.2.9驱动仓库(Driver Store) 413

12.2.10设备管理器(Device Manager) 414

12.2.11安装程序 415

12.2.12新设备向导 416

12.2.13添加硬件向导 416

12.2.14驱动安装器(Driver Installer) 416

12.3重要问题 417

12.3.1寻找和选择 417

12.3.2 32位与64位系统兼容 418

12.3.3系统重启 419

12.4安装模式 420

12.4.1示例1:客户端模式 421

12.4.2示例2:服务器模式 423

12.5安装器编程 424

12.5.1 DIF码 424

12.5.2处理流程 427

12.5.3工程示例 429

12.5.4注册 430

12.6小结 431

INF文件即驱动程序的“安装文件”,它包含了各种与驱动安装有关的指令信息。通过INF文件,系统知道如何处理驱动包中的各个文件,并在系统注册表中做出准确记录。本章主要从指令和域,这两个方面进行讲解。

第13章深入解析INF文件 432

13.1概述 433

13.1.1域 433

13.1.2指令 434

13.1.3多系统 435

13.2注册表指令 436

13.2.1缩写根键 436

13.2.2软件键 437

13.2.3硬件键 437

13.2.4 AddReg 438

13.2.5 DelReg 440

13.2.6 BitReg 441

13.3文件操作指令 441

13.3.1 CopyFiles 441

13.3.2 DelFiles 443

13.3.3 RenFiles 443

13.4服务指令 444

13.4.1 AddService 444

13.4.2 DelService 445

13.5基本域 446

13.5.1版本域 446

13.5.2文件域 447

13.5.3默认安装域 451

13.5.4控制域 454

13.5.5字符串域 457

13.6设备类安装域 458

13.6.1主域 459

13.6.2服务子域 461

13.7接口类安装域 461

13.8厂商/产品域 462

13.8.1厂商域 463

13.8.2产品域 464

13.9设备安装域 464

13.9.1硬件子域 466

13.9.2协安装器子域 467

13.9.3接口子域 468

13.9.4厂商默认配置子域 469

13.9.5逻辑优先配置子域 470

13.10 ChkInf介绍 471

13.11小结 472

驱动安装程序让你的驱动软件显得更加专业,所以,放弃手动安装驱动的做法吧,你的驱动将显得更靓。本章的示例软件MyDrvInst,可以作为读者设计更漂亮的安装软件的开始。

第14章设计驱动安装程序 473

14.1驱动包 474

14.1.1安装方式 474

14.1.2安装驱动包 475

14.1.3卸载驱动包 476

14.2驱动更新 477

14.2.1设备已连接 477

14.2.2设备未连接 478

14.2.3枚举系统设备 481

14.3分析INF文件 484

14.3.1函数介绍 484

14.3.2打印设备ID 486

14.4 MyDrvInst介绍 487

14.5制作软件安装包 490

14.5.1视图介绍 490

14.5.2我们的工程 492

14.5.3编译执行 493

14.6小结 494

附录A CY001 USB开发板 495

附录B VisualKD+ VMWare实现单机内核调试 501

三、六步实现数据驱动运营

数据驱动运营是老生常谈了,但是有好多新手并不懂如何去做数据运营,本文则系统的介绍了如何分6步来实现数据运营。

1.目的

通过对运营数据进行分析,帮助我们进一步对用户进行差分运营。

2.核心

分析问题包含哪些方面,在占比高并且自己可以发力的点上去优化。

运营是一个包含了诸多琐碎事项的工作,运营人员要会拆分自己的工作项,并根据不同工作项的特点有针对地对特定的运营数据进行分析,才能事半功倍。

那么怎么拆分工作项呢?可以按照面对的用户群体分解,通常与用户分级联系在一起,将工作拆分成面向所有普通用户、面向活跃用户、面向付费用户等等。也可以按照项目将自己的工作进行拆分。还可以按照时间顺序确定不同阶段的目标,根据自己的目标来拆分工作项。

拆分完工作项后,针对每一个工作项有不同的指标,我们要根据工作项的特点进一步拆分和细化运营数据指标,然后通过对每一个指标的分析来判断运营问题并不断优化运营方案。

拆分的维度可以按照数据的包含结构,也可以按照每一个工作项包含的子项进行拆分。

以用户运营为例,用户运营包含了用户的拉新、促活、留存、付费转化等方面。而就拉新来说,关键的指标有注册用户的规模、增长速度;渠道质量——注册渠道有哪些,渠道的注册转化率如何;注册流程质量——完成注册的用户数、注册流程中用户蹦失节点统计;注册用户行为追踪——完成注册后用户的行为统计。

细化分析目标是指根据运营目标,确定能够进行优化的数据点。这一步是为接下来的数据提取处理分析奠基的。

举个简单的例子,假如现在做完一场活动,想知道下一次举办相同或相似活动时有哪些地方可以优化,需要关心的点除了最终参与效果还有:活动推广的渠道有哪些,每一个渠道的参与路径是怎样的,路径中的每一步参与人数有多少,转化率达到多少,等等。明确了分析目标后,就可以确定要提取的数据点有哪些。

在提取数据这里涉及一个数据埋点的问题,在产品设计的早期,运营人员就要规划好运营关键点,列出埋点清单提交给开发人员,以免后期运营过程中想要查看某一个数据但却没有数据记录信息。

此外,提取出来的数据要经过一系列的处理后方可进入分析阶段。

(1)数据分析方法

常见的数据分析方法有对比分析法、结构分析法、平均分析法、权重分析法、杜邦分析法等等。

1)对比分析法

指按照不同的维度进行对比,以探寻数据的变化,发现其中蕴含的规律或启示。

对比的维度包含了:与预期目标对比、不同时间段的对比、与同行对比、与运营前的效果对比、不同用户间的对比、不同操作间的对比,等等。

接下来用一个例子讲解如何通过对不同时间段数据的对比来进行用户画像并根据用户画像做出运营策略的调整。

上边这张折线图反应的是某产品的日活跃用户数变化规律。2016年4月初到7月初其基本是成周期变化,且周期为一个星期,数据较大的点主要是在周末,因此我们可以推测这个产品的主要用户是学生。而且在6月的时候日活跃数据略有所下降,7月中旬以后数据上升且变化这与学生期末考试和放假的时间也基本吻合,进一步佐证了用户画像。

2)结构分析法

被分析总体内的各部分与总体之间的对比分析,常用结构相对指标(=(部分/总体)*100%)来表示,这个数值越大表明该部分在整体中所占权重越大,其重要性越大,对整体的影响也就越大。

3)平均分析法

反映的是一定条件下,某个指标的一般水平,多用于衡量业务的健康度。

比方说某个商品有A、B、C三个销售渠道,假如想了解这三个销售渠道谁对营收贡献最大,可以统计这三个渠道的平均销售额。这个时候要注意,平均分析法的“平均”是有前提的,它必须建立在用来计算平均值的数据是否都是有效的。比方说现在A渠道有一天的销售数据突然骤减为0,这是很反常的,这个时候要去查问题到底出在哪,如果是因为比方说那天A渠道出现了某些突发故障,那么应该剔除这个数据再计算平均值。

那是不是平均值越高说明业务越健康呢?

不一定。比方说A卖的是羽绒服,B卖的是短裙,夏季的时候A的销售均值比B低,这并不能说明A的业务就比B的差。

平均分析法适用于双方的业务和所处的情况比较接近也即我们常说的,具有可比性时,才有意义。

4)权重分析法

将多个指标转化为一个能够反映综合情况的指标来进行分析评价,具体的做法是确定各个指标的权重,然后对处理后的指标进行汇总后计算出综合评价指数。常用以对处于并列关系的子类进行分析。

如图所示,某产品有三个推广渠道——A、B和C。这三个渠道又细分为通过购买母婴类产品的推荐转化、参加相关线下活动的转化以及来自公众平台的转化。若要衡量A、B、C三个渠道的质量如何,可以给各个细分渠道设置某个权重,定义“渠道质量”这个指标对应的公式(如:渠道质量=购买了母婴类产品后的推荐转化人数*60%+线下活动转化人数*30%+公众号转化人数*10%),通过加权求和后比较这三个渠道的质量高低。

那权重的设置依据是什么呢?一个是要根据各个细分指标的重要性,另一个来自于以往的运营结果。还是以刚刚那个产品为例,假设产品是跟母婴类相关的,那么根据以往的运营经验,通过购买了母婴类商品后的推荐引流来的用户,后续转化为活跃用户的概率更高,那么这个渠道的权重就可以相应的设高点,而通过公众号导流来的用户流失率极高,其权重就可以比较低。

5)杜邦分析法

杜邦分析法是由美国杜邦公司创造并最先采用的一种综合分析方法。利用各个指标间的内在联系,可以对自己的运营状况及效益进行综合分析评价。

如图所示,假设产品更新后最近的收入降低了,老板让分析下原因出在什么地方、可以做出哪些调整,那么我们可以将收入拆分——收入=付费人数*ARPU(每用户平均收入)。接下来对付费人数进行拆分,付费人数=活跃人数*付费渗透率。据观察,付费渗透率几乎没有变化,而活跃人数下降了,进一步细分活跃人数。活跃人数=新用户中的活跃用户+老用户中的活跃用户,倘若老用户中的活跃人数上升了,而新用户的活跃人数下降了,可以进一步将其拆分。然后分析,新用户=推广覆盖人数*转化率,在转化率基本不变的情况下,将推广渠道细分,根据数据,渠道一下降了而渠道二上升了,不断进一步拆分,直到指标不能再细分后,针对细分后的指标分析其中哪些对最终的收入影响较大,产生变化的原因是什么,是否可以通过人为的调整方案后进行改善,等等。

(2)造成数据波动的原因

常见造成数据变化的原因:时间、推广与触达、运营活动、关联特性、用户属性和构成、故障、业界趋势。

前三个就不详细展开了,这里讲下后边几个要素。所谓关联特性其实就是刚刚通过杜邦分析法拆分出来的要素,而用户属性和构成要素是指针对不同的用户,同个产品或活动的日活、付费等数据是会发生变化的。业界趋势对运营数据的影响:举个去年很火的例子——O2O,去年O2O这个概念炒的特别火的时候,大量资本砸钱进入这个市场,在各种补贴的**下,用户激增,现在市场较为成熟后,用户数增长就比较平缓了。

仔细观察可以发现,以上数据分析流程实际上形成了一个闭环。总结汇报完毕,我们需要将得出的结论运用到实践中,继续观察数据的变化并不断优化我们的运营策略。

为了能够更好地帮助刚开始建立运营体系的企业解决一些日常工作中的痛点,推荐你上一门由作者总策划的课《互联网人的数据运营实践训练营》,由长年工作在大型互联网企业内部,踩过过无数的“数据坑”,平均经验都在十年以上,都符合格拉德威尔在“一万小时定律”中的描述的四位老师:安琦、黄捷、黄一能、王晔传授!时间:2016年12月17日-18日 8:30-17:30,一定能有效地帮助你。

报名: http://event.3188.la/530802826

OK,本文到此结束,希望对大家有所帮助。