选择硬件:
? 从开始菜单里,选择WinDriver|Driver Wizard ,运行
DriverWizard 程序。
DriverWizard 将会在你的机器上显示所有的即插即用设备。
? 对于即插即用设备: 从列表中选择你的硬件设备。 ? 对于非即插即用设备: 从列表中选择 “ISA” (你的鼠
标,键盘,内存等都是ISA 设备) 。
谁必须用WinDriver?
1. 硬件开发者--用这个驱动程序向导来快速测试你的新硬件。
2. 软件开发者 --用这个驱动程序向导来 产生设备驱动代码驱动你的硬件。用 WinDriver 工具来检测和调试
你的驱动程序。.
WinDriver 支持哪个操作系统?
1. WinDriver 现在支持 Windows 95, 98, NT, 2000, Windows CE, Linux, Solaris 和 VxWorks. 检查一下 RFTech
网址看看在操作系统支持上是否有新的升级。
2. 利用WinDriver,你写一样的驱动程序将会运行在以上所有的平台上--只要重新编译即可运行。学习
WinDriver 的方式,请看 WinDriver 技术白皮书。
在哪获得更多深入的资料?
1. 要想得到WinDriver 技术白皮书、更深入的资料和价值30天的免费使用,请看 KRFTech 网址:
https://www.sodocs.net/doc/b15989569.html,/dnload.html
2. 完整的 WinDriver 指南可以从 https://www.sodocs.net/doc/b15989569.html,/manuals.html 下载。
六步建立设备驱动程序:
快速入门指南 安装:
? 把硬件装置插入到PC
机上 ? 安装 WinDriver 。 五分钟学会写设备驱动程序.
检测 / 定义硬件:
?
Driver Wizard 将自动测试即插即用设备资源(I/O 范围, 内存范围以及中断)。你可以手动定义寄存器。
?
对于非即插即用设备: 你需要动定义硬
件资源。
.
. .
BYTE MyCard_ReadStatusRegister (MyCard_HANDLE hMyCard)
{ BYTE data;
MyCard_ReadWriteBlock(hMyCard, 测试硬件:
在写驱动程序之前确信你的硬件工作正常是很重要的。使用Wizard 程序诊断你的硬件, 如果硬件正在工作它可以查出以下内容:
? 读写硬件的内存及寄存器。 ? 监听硬件中断。
产生驱动程序代码:
使用Driver Wizard 产生驱动程序代码。它可以生成如下代码:
? 操作硬件的应用程序级(内核级)API 函数。
? 用上述API 函数操作硬件的样本应用程序。 ? 各种工程文件(对应与Windriver 所支持的各种操作系统及环境)。
Your Driver
Project Name 编译及运行:
?让Driver Wizard为你喜欢的编译器产生工程文件。
?编译样本诊断程序并运行它! 这个样本程序是你最终的驱动程序的一个雏形。
?修改样本程序以适合你的需要, 或者使用WinDriver提供的其它许多例子程序。
Your hardware access API,
and a sample application that uses this API
Intuitive API. Call these functions directly from within your application! Start with XXX_Open(), use the Read/Write functions, Interrupt handling functions, etc., and finish with XXX_Close().
Your Hardware
实际操作
下面的练习将使您在5分钟内领略WinDriver的一些功能. 你可以从https://www.sodocs.net/doc/b15989569.html,下载一个30天的使用版来做如下练习。
练习1: 读写PCI 内存
目标:学习如何读写PCI内存范围,以及如何定义寄存器。
概况:这个练习会演示如何通过Driver Wizard读写PCI内存卡, 并产生这样的一个应用程序。下面将以读写PCI ( AGP) 显示卡为例来说明这个过程。
第1步:启动Driver Wizard
第2步:从开始菜单,选择"程序 | WinDriver | Driver Wizard".
第3步:在Driver Wizard 菜单, 单击"File | New Project"菜单.
第4步:从即插即用列表中选择显示卡,通过生产商的名字来选定。
第5步:单击“Memory” 标签。该显示卡三内存范围显示出来. 内存范围的一段映射到显示器,例如,内存范围中的数据映射到屏幕上的点阵. 从位置0开始读(屏幕的左上角位置). 现在移动一个窗口到屏幕左上角然后再读,如果此时内存值变化了,说明你找的内存块是正确的。现在你可以往这个内存块中写数据,你将会发现屏幕点阵发生变化!
** 注意:如果你写的内存块不是显示卡位置,将会死机并需要重启系统。
第6步:定义一个“TopLeft” 寄存器,它代表屏幕左上角 (例如位移0). Read and write to this register.
定义另一个寄存器“Somewhere”, 它的位移是FF (屏幕上另一处点阵).
第7步:单击"Build | Generate code" 菜单– Driver Wizard 将产生操作硬件资源的函数,你可以在用户模式下在你的应用程序中直接使用这些函数,这个向导还会产生一个样本程序来使用这些函数操作硬件!
第8步: 编译并运行该样本程序. 使用它来读写你的显示卡。
多简单啊—试一试!
** 注意:你现在可以拷贝这些材料到任何其它所支持的操作系统 (Linux, Solaris, Windows CE 等等), 重新编译,然后运行!
在练习1中由Wizard 程序产生的部分API函数:
BOOL SCREENCARD_Open (SCREENCARD_HANDLE *phSCREENCARD, DWORD dwVendorID, DWORD
dwDeviceID, DWORD nCardNum, DWORD options);
void SCREENCARD_Close(SCREENCARD_HANDLE hSCREENCARD);
// General read/write functions
void SCREENCARD_WriteWord (SCREENCARD_HANDLE hSCREENCARD, SCREENCARD_ADDR
addrSpace, DWORD dwOffset, WORD data);
void SCREENCARD_WriteDword (SCREENCARD_HANDLE hSCREENCARD, SCREENCARD_ADDR
addrSpace, DWORD dwOffset, DWORD data);
// This register represents a Pixel somewhere on the screen.
DWORD SCREENCARD_ReadSomeWhere (SCREENCARD_HANDLE hSCREENCARD);
void SCREENCARD_WriteSomeWhere (SCREENCARD_HANDLE hSCREENCARD, DWORD data);
// This register toggles the top left pixel on the screen.
DWORD SCREENCARD_ReadTopLeft (SCREENCARD_HANDLE hSCREENCARD);
void SCREENCARD_WriteTopLeft (SCREENCARD_HANDLE hSCREENCARD, DWORD data);
// handle interrupts
BOOL SCREENCARD_IntEnable (SCREENCARD_HANDLE hSCREENCARD, SCREENCARD_INT_HANDLER
funcIntHandler);
void SCREENCARD_IntDisable (SCREENCARD_HANDLE hSCREENCARD);
练习: 处理中断
目标:学习如何测试中断,并写出中断处理程序。
概况:在这个练习中你将使用Driver Wizard 监听由软盘驱动器产生的中断,然后你可以用此程序产生一个应用程序来监听中断并在用户模式下写出一个中断处理程序。
第1:启动Driver Wizard
第2:从开始菜单上, 选择 "程序 | WinDriver | WinDriver Wizard".
第3:在Wizard的菜单上, 单击"File | New Project". Wizard程序会显示你机器中的即插即用卡列表第4:由于我们将为软盘驱动器写程序,选择ISA
第5:单击“中断” 标签.
?定义软盘驱动器: 将中断命名“FloppyInterrupt”, 选择6作为中断号。
?在创建的中断上单击右键, 单击“shared”. 这是因为要与操作系统共享此中断
第6:单击“监听中断”.
?查看软盘驱动器中断: 随意操作软盘驱动器 (例如, 在DOS路径下敲一个"a:" 浏览A盘上一个文件)。
第7:单击菜单"Build | Generate code" – Driver Wizard 将会产生你定义的中断的功能函数. 你可以在用户模式下直接调用这些函数. Wizard还产生一个样本程序来演示如何操作软件驱动器
第8:编译并运行样本程序
第9:在样本程序中监听软件中断. 然后更改中断处理过程,把你自己的功能加到里面去。
多简单啊—试一试!
** 注意:
1.使用WinDriver’s 内核插件特性,可以在内核模式下处理中断及IO调用,这样可以达到
优化操作的目的。
2.你可以测试一下PS鼠标中断 (Interrupt 12 on NT)及键盘中断 (Interrupt 1 on NT).