搜档网
当前位置:搜档网 › Windriver的使用

Windriver的使用

Windriver的使用
Windriver的使用

使用Windriver操作PCI的流程

Radioboy2005@https://www.sodocs.net/doc/122700851.html,

一、Windriver操作流程

图1 操作流程图

二、Windriver操作函数

1、打开Windriver,添加许可

hWD = WD_Open();

// 确认版本和许可文件

if (hWD==INVALID_HANDLE_VALUE)

{

exit_flag = 1;

}

else

{

strcpy(lic.cLicense,"6C3CC2CFE89E7AD0425ECC B375D728D6B53BCB4F.AAAAA");

WD_License(hWD,&lic);

}

2、打开指定的PCI设备

BZERO(pciScan);

pciScan.searchId.dwVendorId = axtoi(m_VendorID); //VendorID

pciScan.searchId.dwDeviceId = axtoi(m_DeviceID); //DeviceID

WD_PciScanCards (hWD, &pciScan);//打开设备

3、读取设备分配的地址空间

DWORD BARSize[2];

DWORD BARAddr[2];

BZERO(pciCardInfo);

pciCardInfo.pciSlot =

pciScan.cardSlot[nCardNum];

WD_PciGetCardInfo (hWD, &pciCardInfo);//读取BAR0、BAR1的地址和空间大小

BARAddr[0] =

pciCardInfo.Card.Item[1].I.Mem.dwPhysicalAddr; BARSize[0] =

pciCardInfo.Card.Item[1].I.Mem.dwBytes; BARAddr[1] =

pciCardInfo.Card.Item[2].I.Mem.dwPhysicalAddr; BARSize[1] =

pciCardInfo.Card.Item[2].I.Mem.dwBytes;

4、锁定设备的读写地址空间

WD_CARD_REGISTER cardReg;

BZERO(cardReg);

cardReg.Card.dwItems = 1;

cardReg.Card.Item[0].item = ITEM_MEMORY;

cardReg.Card.Item[0].fNotSharable = TRUE;

cardReg.Card.Item[0].I.Mem.dwPhysicalAddr = BARAddr[0];

cardReg.Card.Item[0].I.Mem.dwBytes = 8;

WD_CardRegister(hWD, &cardReg);

5、读写配置寄存器

UCHAR i=0 ;

DWORD ConfigBuffer[24];

BZERO(pciCnf);

pciCnf.dwBytes = 0x04;

pciCnf.fIsRead = TRUE;

for (i=0;i<15;i++)//读取PCI寄存器所有信息

{

pciCnf.dwOffset = 4*i;

WD_PciConfigDump(hWD,&pciCnf);

ConfigBuffer[i]= dwVal;

}

函数说明:(1)dwVal:从配置寄存器中读出的数据;或者是要写入配置寄存器中的数据;

(2)dwReg:配置寄存器的偏移地址;

(3)dwBytes:读取的字节数,大小跟配置寄存器大小一致;

(4)pciCnf.fIsRead = TRUE:TURE是从配置寄存器中读取数据;FALSE是向配置寄存器中写入数据。

6、从PCI读取单个数据

WD_TRANSFER Trans;

DWORD dwResult;

DWORD read_data;

BZERO(Trans);

Trans.cmdTrans = RM_DWORD; /* Read Memory DWORD */ Trans.dwPort = cardReg.Card.Item[0].I.Mem.dwTransAddr;

//从WD_CardRegister(hWD, &cardReg)中读到的可执行的地址

//Trans.Data.Dword = 0x10223456;

如何使用Windriver 操作PCI

第 3 页 共 4 页

表1 寄存器地址定义和偏移量

表2 寄存器偏移地址定义

如何使用Windriver操作PCI

WD_Transfer(hWD, &Trans);

read_data= Trans.Data.Dword ;/* Read Memory DWORD

*/

7、向PCI中写入单个数据

WD_TRANSFER Trans;

DWORD dwResult;

//DWORD read_data;

BZERO(Trans);

Trans.cmdTrans = RM_DWORD;

/* Write Memory DWORD */

Trans.dwPort =

cardReg.Card.Item[0].I.Mem.dwTransAddr;

//从WD_CardRegister(hWD, &cardReg)中读到的可执行的

地址

//Trans.Data.Dword= 0x10223456;

Trans.dwBytes = 8;

WD_Transfer(hWD, &Trans);

//read_data= Trans.Data.Dword ;

说明:相似函数还有WD_MultiTransfer(hWD, &Trans,

dwNum);

8、从PCI读取多个数据

9、从PCI写入多个数据

WD_TRANSFER Trans;

char *cData = "HelloWorld!\n";

BZERO(Trans);

Trans.cmdTrans = WM_SWORD; /* Write Memory String

BYTE */

Trans.dwPort =

cardReg.Card.Item[1].I.Mem.dwTransAddr;//

Trans.Data.pBuffer = cData;//

Trans.dwBytes = strlen(cData);//

Trans.fAutoinc = TRUE;

Trans.dwOptions = 0;

WD_MultiTransfer(hWD,&Trans,Trans.dwBytes);

10、DMA操作方式

windriver

基于WinDriver的ARINC429总线接口板卡驱动程序设计 2008-11-4 11:50:00易小青王倩栾春旭供稿 摘要:WinDriver是一套功能强大的驱动程序开发包,使用WinDriver开发Windows下的驱动程序不需要熟悉DDK编程及驱动模式,可以简化开发设备驱动程序的过程,缩短开发周期。本文在介绍一种ARINC429 总线接口板卡体系结构的基础上阐述了利用WinDriver开发设备驱动的步骤和方法。 关键字:WinDriver; ARINC429; 设备驱动程序 Design of device driver for ARINC-429 bus interface card using WinDriver kit Yi Xiaoqing,Wang Qian,Luan Chunxu Abstracts: Design of device driver for ARINC-429 bus interface card using WinDriver kit WinDrive r device driver toolkit has powerful function. Using WinDriver to develop the driver under Window s not to need to be familiar with the DDK programming and the actuation pattern . It can also predi gest the process of developing of device driver and reduce the development cycle. This paper introd uces the steps and methods of developing device drive with WinDriver on the basis of the architectu re of ARINC-429 bus interface card. Keywords: WinDriver; ARINC429; Device driver programming 0 引言 在现代军、民用飞机上,系统间需要传输大量信息。随着数字技术的发展和微型电子计算机的出现,越来越多的航空电子设备已采用了数字化技术。美国航空无线电公司(ARINC)制定的ANINC429 数字信息传输规范成为在航空电子设备之间传输数字信息的航空运输工业标准。该标准克服了模拟传输所导致的成本高、传输线多、可靠性差的缺点,提高了信息传输精度。针对实现ARINC429数据传输的总线接口板研究已经有很多,但在设计完硬件电路后,直接面临的一个大问题便是开发其驱动程序。如何在涉及较少系统内核知识的前提下快速开发出高质量、高可靠性的驱动程序是是迫切要解决的问题。美国Jungo公司的WinDriver开发包因其简洁高效、不涉及操作系统底层编程且有很好的兼容性成为编写驱动程序的一种好工具,本文将给出基于WinDriver用户模式的ARINC429总线接口板卡驱动程序的设计方法。 1 ANINC429总线接口卡结构设计 1.1 ARINC429规范概述 ARINC429总线是美国航空无线电公司(ARINC)制定的民用航空数字总线传输标准,规定了使用该总线的航空电子设备的信息量流向ARINC429基本数据字的格式。ARINC429是一种单向广播式数据总线,传输介质由双绞屏蔽电缆组成。ARINC429 数字信息传输规范阐述了通过一对屏蔽双绞线(数字数据总线)从一个端口向其它系统和设备以串行方式传输数字数据信息的方法。信息传送的速率是:高速传输的位速率为100Kb/s±1%,低速传输的位速率为12. 0~14.5Kb/s±1%。ARINC429规定数据传输采用双极性归零码(如图1所示),即调制信号由“高”、

Windriver的使用

使用Windriver操作PCI的流程 Radioboy2005@https://www.sodocs.net/doc/122700851.html, 一、Windriver操作流程 图1 操作流程图

二、Windriver操作函数 1、打开Windriver,添加许可 hWD = WD_Open(); // 确认版本和许可文件 if (hWD==INVALID_HANDLE_VALUE) { exit_flag = 1; } else { strcpy(lic.cLicense,"6C3CC2CFE89E7AD0425ECC B375D728D6B53BCB4F.AAAAA"); WD_License(hWD,&lic); } 2、打开指定的PCI设备 BZERO(pciScan); pciScan.searchId.dwVendorId = axtoi(m_VendorID); //VendorID pciScan.searchId.dwDeviceId = axtoi(m_DeviceID); //DeviceID WD_PciScanCards (hWD, &pciScan);//打开设备 3、读取设备分配的地址空间 DWORD BARSize[2]; DWORD BARAddr[2]; BZERO(pciCardInfo); pciCardInfo.pciSlot = pciScan.cardSlot[nCardNum]; WD_PciGetCardInfo (hWD, &pciCardInfo);//读取BAR0、BAR1的地址和空间大小 BARAddr[0] = pciCardInfo.Card.Item[1].I.Mem.dwPhysicalAddr; BARSize[0] = pciCardInfo.Card.Item[1].I.Mem.dwBytes; BARAddr[1] = pciCardInfo.Card.Item[2].I.Mem.dwPhysicalAddr; BARSize[1] = pciCardInfo.Card.Item[2].I.Mem.dwBytes; 4、锁定设备的读写地址空间 WD_CARD_REGISTER cardReg; BZERO(cardReg); cardReg.Card.dwItems = 1; cardReg.Card.Item[0].item = ITEM_MEMORY; cardReg.Card.Item[0].fNotSharable = TRUE; cardReg.Card.Item[0].I.Mem.dwPhysicalAddr = BARAddr[0]; cardReg.Card.Item[0].I.Mem.dwBytes = 8; WD_CardRegister(hWD, &cardReg); 5、读写配置寄存器 UCHAR i=0 ; DWORD ConfigBuffer[24]; BZERO(pciCnf); pciCnf.dwBytes = 0x04; pciCnf.fIsRead = TRUE; for (i=0;i<15;i++)//读取PCI寄存器所有信息 { pciCnf.dwOffset = 4*i; WD_PciConfigDump(hWD,&pciCnf); ConfigBuffer[i]= dwVal; } 函数说明:(1)dwVal:从配置寄存器中读出的数据;或者是要写入配置寄存器中的数据; (2)dwReg:配置寄存器的偏移地址; (3)dwBytes:读取的字节数,大小跟配置寄存器大小一致; (4)pciCnf.fIsRead = TRUE:TURE是从配置寄存器中读取数据;FALSE是向配置寄存器中写入数据。 6、从PCI读取单个数据 WD_TRANSFER Trans; DWORD dwResult; DWORD read_data; BZERO(Trans); Trans.cmdTrans = RM_DWORD; /* Read Memory DWORD */ Trans.dwPort = cardReg.Card.Item[0].I.Mem.dwTransAddr; //从WD_CardRegister(hWD, &cardReg)中读到的可执行的地址 //Trans.Data.Dword = 0x10223456;

利用windriver 开发了个usb的驱动,写个开发心得

利用windriver 开发了个usb的驱动,写个开发心得 项目组需要利用2440采集数字电视的采样数据,所以让我开发一个usb的数据采集系统,就两个要求 1 速度要达到500kbyte/s以上 2 稳定 由于之前没有做过windows驱动的经验,所以花了3,4天时间读了读ddk的文档,期间还上chinapub 找个本书,读了免费的第1章,按照他配置了vc的编译环境,呵呵。 然后就吧ddk下面的bulkusb源代码进行了修改,写好usb device的驱动,有些了个应用程序,测试一下,采集数据是ok了,但是发现有时候蓝屏,特别是采集100m左右,就会出现蓝品!这下没办法了,由于我本身就对windows内核编程不熟悉,有调试了大概3,4天确认问题可能处在电源管理方面,联系到自己对这方面不是很熟悉,而且时间紧迫,没办法转向windriver开发 !我安装的是9.21版本(请到迅雷下载)。 1. 驱动的开发: a 这步开发比较简单,首先确认你的device固件正确能枚举成功,然后将device连接到pc us b ho st 端。 b 按照向导指引刷出你的设备进行配置,然后点击编译按钮生成代码。这部分内容请参考安装文档的快速开发向导! 2.应用程序开发: 最主要的几个函数是,opendevice 和readwrite 函数:其实大家只要摘录向导生成代码的内容即可,这里贴一个我的 static WDU_DRIVER_HANDLE hDriver = 0; static DRIVER_CONTEXT DrvCtx ; static BOOL DLLCALLCONV DeviceAttach(WDU_DEVICE_HANDLE hDevice,

WinDriver 9.01 安装指南和使用说明

WinDriver 9.01 安装指南和使用说明 第一部分 安装指南: 1、双击名为keygen的图标,出现注册机的画面,见图1.1。在User Name 下面的文本框中输入您自己的用户名(任意英文字母都可以)。然后单击左下角的Generate按钮,可以在Your Serial下的文本框中看到生成的序列号。选中这一串数字,复制(Ctrl+C)到剪切板中。 图1.1 2、双击名为windriverforwindows的图标,看到初始安装画面单击Next后看到关于License的说明单击I Agree后看到如图1.2所示画面。 图1.2

3、无需任何更改直接单击Next,看到图1.3所示画面。 图1.3 4、单击Browse选择要安装文件的目录后,单击Install。程序进入自动安装状态,此时用户无需任何操作耐心等待安装完成后,出现如图1.4所示的画面。 图1.4 5、单击Finish图标。此时可以看到图1.5所示的画面,同时桌面任务栏的右侧出现了黄色的警告三角及提示信息。

图1.5 6、单击上图中的Register Now图标,可以看到图1.6所示的画面。 图1.6 7、将刚才复制在剪切板中的数字粘贴到Please enter your license string下面的文本框中,单击文本框下面的Active license按钮,可以看到Current Active License下面出现了注册成功的提示信息。单击OK即可完成注册,出现软件运行的起始画面了。

第二部分 使用说明: 1、双击桌面上的图标打开WinDriver软件,每次打开软件都可以看到图2.1所示的对话框。对于一个新的应用单击左面的New host driver project(新建一个主机驱动项目)就可以了。如果用户已经建立了一个项目,请单击右面的Open an existing project(打开已经存在的项目)。如果用户想在已经打开的软 件中新建一个项目也可以单击工具栏左侧的图标按钮,同样会出现图 2.1所示的画面。 图2.1 2、假设我们选择单击上图中左边的图标后,可以看到下面的画面,见图2.2。在左边的选择您要开发的设备驱动类型。左边的列表中实际上列出了您的电脑上当前安装的所有设备的驱动类型或者是已经连接到您的电脑但是需要安装驱动程序的设备所需要的驱动类型。因此在用WinDriver开发设备驱动之前首先要将设备连接到您的电脑上。

Jungo_Windriver_Quick Start Guide_PCI_简中_1031

WinD 五分钟WinDriver 驱动程序开发工具快速使用指南 五分钟教您如何撰写驱动程序WinDriver Version 10.3.1 For PCI/ PCI Express / PCMCIA 具 程序

一、产品说明 1.谁需要使用WinDriver ? ◎硬件研发人员:使用◎软件研发人员:使用您的硬件,使用Win 2.WinDriver 支持哪些操作◎Windows 7 / Vista / S https://www.sodocs.net/doc/122700851.html,, Windows Em MAC OS X 10.5.x-10.Windows NT 4.0, Sola 您可以从Jungo 官网了◎Windriver 所产生的驱支持上述的任一操作3.我可以从哪里得到更深入◎WinDriver 三十天免费https://www.sodocs.net/doc/122700851.html, ◎欢迎从Jungo 官网下载址为http://www.jung iver :使用Driver Wizard 即可快速测试您的新硬件:使用Driver Wizard 即可产生出硬件驱动程序编用WinDriver 程序工具即可测试以及除错您的驱些操作系统? ta / Server 2008 / Server 2003 / XP / 2000, Wi ws Embedded CE v6.00, Windows Mobile5.0 /x-10.6.x and Linux。另外,Jungo 也支持早期, Solaris,以及VxWorks。 官网了解最新的支持操作系统。 生的驱动程序,可以不必修改任何代码,仅需重一操作系统 更深入的技术文件呢? 天免费,全功能测试版下载网址:.com/st/download.html 网下载完整的Windriver 白皮书、使用手册、技https://www.sodocs.net/doc/122700851.html,/st/support/support_windriver.html 硬件 程序编码来驱动您的驱动程序 0, Windows e5.0 / 6.0 and 持早期版本的 仅需重新编译即可册、技术文件,网.html

利用WinDriver开发PCI设备驱动程序

摘要:WinDriver是一套PCI驱动程序开发包。它改变了传统驱动程序开发的方法与思路,极在地简化了驱动程序的编制;同时,又没有牺牲驱动程序的性能,是一套高效、快捷的P CI驱动程序开发软件包。特别适合专业硬件人员的使用。 关键词:设备驱动程序 WinDriver PCI WinDriver是Jungo公司出版的一个设备驱动程序开发组件,它可以大大加速PCI设备驱动程序的开发。作者在实际的项目中采用了WinDriver来开发设备驱动程序,取得了相当好的运行效果。从目前国内的资料上来看,大多数设计人员还是在用DDK、Wtools开发设备驱动程序,因而作者觉得有必要向大家介绍与推荐这个软件。 WinDriver是一套设备驱动程序开发组件,它的目的就是方便Windows程序员快速开发出P CI/ISA设备的Windows驱动程序(目前最新的版本V4.32还支持PCMCIA、USB设备的驱动程序的开发,并且除了支持Windows9X/NT系统外,还有支持Unix、Windows CE的版本推出)。利用WinDriver开发设备驱动程序,不需要熟悉操作系统的内核,整个驱动程序中的所有函数都是工作在用户态下的,通过与WinDriver的.Vxd或者.Sys文件交互来达到驱动硬件的目的。由于是一个用户态程序,效率的高低也就成了人们选择WinDriver时关心的一个问题。大量实践数据表明,WinDriver并没有通过牺牲系统性能来换取驱动程序的快速开发,的确是一个“像开发用户态程序那样简单,像核心态程序那样高效”[1]的开发工具。 图1是WinDriver的体系结构图。 1 WinDriver主要特征 ·提供了从用户层访问硬件的简单方法; ·能够方便地将性能要求特别苛刻的部分通过Windriver提供的API插入到核心态模式运行,提高执行效率;

WinDriver教程

WinDriver教程 一、如何用windrive打开、关闭设备以及查看设备的信息 1.所有有关的WD_API在安装后的相关目录下可以找到,建议打印出来,仔细看下。 2.打开、关闭设备与查看相应信息: HANDLE m_hPex; DWORD Bus,Slot,Fun,Interrupt; DWORD BaseAddrCS0,BaseAddrCS1,BaseAddrCS2,BaseAddrCS3; DWORD RangeAddrCS0,RangeAddrCS1,RangeAddrCS2,RangeAddrCS3; //打开设备: WD_LICENSE lic; m_hPex=WD_Open(); if (m_hPex==INVALID_HANDLE_VALUE) { str="INVALID_HANDLE_VALUE"; } else { //重新注册wd,去除过期限制 strcpy(lic.cLicense, "你的注册号"); WD_License(m_hPex, &lic); } //检查WD版本 WD_VERSION ver; BZERO(ver); WD_Version(m_hPex, &ver); if (ver.dwVer

{ str="Windriver Overdue"; } WD_PCI_SCAN_CARDS pciScan; WD_PCI_SLOT pciSlot; BZERO(pciScan); //以PEX8311为例 pciScan.searchId.dwVendorId = 0x10b5; pciScan.searchId.dwDeviceId = 0x86e1; WD_PciScanCards (m_hPex, &pciScan); if (pciScan.dwCards>0) { pciSlot = pciScan.cardSlot[0]; WD_PCI_CARD_INFO pciCardInfo; WD_CARD Card; BZERO(pciCardInfo); pciCardInfo.pciSlot = pciSlot; WD_PciGetCardInfo (m_hPex, &pciCardInfo); if (pciCardInfo.Card.dwItems!=0) { Card = pciCardInfo.Card; } else { str="Pcicard=0"; }

用Windriver调试开发PLX9052的几点经验

用Windriver调试开发PLX9052的几点经验.txt偶尔要回头看看,否则永远都在追寻,而不知道自己失去了什么。男人掏钱是恋人关系,女人掏钱是夫妻关系,男女抢着掏钱是朋友关系。男人爱用眼睛看女人,最易受美貌迷惑;女人爱用心看男人,最易受伤心折磨。用Windriver调试开发PLX9052的几点经验版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明 https://www.sodocs.net/doc/122700851.html,/logs/49676398.html 用WinDriver的优点就是开发简单,不必了解底层的很多东西,而且 编出的程序与操作系统无关,不像Vxd那样,只能在98下用,否则就要 写WDM. 任何东西都有缺点,WinDriver也不例外,主要wdpnp.sys来维护底层, 这样就会造成相应时间的增加,但是对于一般的应用已经足够了(本人 曾经做过一块数据传输率为12Mbps的PCI卡,驱动就是用Windriver写的). 而且,如果是对性能要求比较苛刻,也可以自己编写Kernal程序. 本人 的观点就是如果作研究,PCI只是作为数据传输的通道,主要的为了验证板上的电路功能, 那么PCI驱动开发越简单越好,可以把主要精力放在真正的关键设计上. 如果是作产品开发,好的驱动还是必不可少的,至少要考虑对主板的兼容性和稳定性. 以下是自己开发过程的一点经验总结,供入门者参考,也请高手们批评指正. Pci的接口芯片本人只用过AMCC的S5933和PLX的9052,现在正在用9054,觉得 还是PLX的芯片价格便宜,量又足(好买),开发简单,所以我们一直都用它. 关于Plx芯片的硬件电路设计,可以参考公司提供的RDK.(ThreeWater的FTP上就 有),布线时只要注意时钟线,其他线只要别太长(一般接口芯片离插槽都很近,想 画长也不容易,像时钟线,还得走蛇行才行).还有就是93cs46不好买,可以用93LC46 来替代. 这里主要介绍用WinDriver的开发流程: 1. 运行WinDriver Wizard,找到PCI卡. 先将卡插好,确认E2PROM已经插上(可以是空的),启动计算机.发现新硬件提示,忽略. 运行WinDriver Wizard 之后,选"Creat a new driver"选项,在列表中查找PCI : PLX 9050,如果找到, 说明Windriver已经识别出你的卡了.双击之后,进入调试程序,可以查看计算机给 卡分配的各种资源,如IO地址,Memery空间,Int号等等. 2. 生成.inf文件. 在右边的按钮中选择"Generate .INF file",下次启动提示发现新硬件时,就可以 用这个.inf文件来加载wdpnp.sys. 这个文件在X:\windriver\redist目录里.这样 以后启动就不会在提示有新硬件了. 3. 填写E2PROM. 从开始菜单里选择"程序->Windriver->Simples->PLX 9050 Diagnostic",出现 一个调试菜单.选择对E2prom操作即可. 注意: 93LC46的6脚要结VCC,这样才能读E2prom写,否则只能读了. 4. 用上面的程序就可以对卡进行调试了,功能和PLXMon差不多.如果对板上的各个 空间(Bar)都能正常读写,中断可以相应(如果有的话),那么你就已经成功了一半了,

WinDriver教程

WinDriver 教程 一、如何用windrive打开、关闭设备以及查看设备的信息 1?所有有关的WD_API在安装后的相关U录下可以找到,建议打印出来,仔细看下。2?打开、关闭设备与查看相应信息: HANDLE mJiPex; DWORD Bus, Slot, Fun, Interrupt; DWORD BaseAddrCSO, BaseAddrCSl, BaseAddrCS2, BaseAddrCS3: DWORD RangeAddrCSO, RangeAddrCSl, RangeAddrCS2, RangeAddrCSS: 〃打开设备: WD_LICENSE lie: m_hPex=W_Open (); if (m_hPex==INVALID_HANDLE_VALUE) { str="INVALID_HANDLE_VALUE": } else //?新注册wd,去除过期限制 strcpy(lic. cLicense,"你的注册号"); W_License (m_hPex, &lic) ; } //检査WD版本 WD_VERSION ver: BZERO(ver);

ftT)_Version (m_hPex, &ver); if (ver. dwVer0) pciSlot = pciScan. cardSlotCO]: W_PCI_CARD_INFO pciCardInfo: W_CARD Card: BZERO(pciCardInfo); pciCardInfo. pciSlot = pciSlot: W_PciGetCardInfo (m_hPex, &pciCardInfo); if (pciCardInfo. Card. dwItems!=0) Card = pciCardInfo. Card: else

WinDriver中文帮助

选择硬件: ? 从开始菜单里,选择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/122700851.html,/dnload.html 2. 完整的 WinDriver 指南可以从 https://www.sodocs.net/doc/122700851.html,/manuals.html 下载。 六步建立设备驱动程序: 快速入门指南 安装: ? 把硬件装置插入到PC 机上 ? 安装 WinDriver 。 五分钟学会写设备驱动程序.

WinDriver教程

一、如何用windrive打开、关闭设备以及查看设备的信息 1.所有有关的WD_API在安装后的相关目录下可以找到,建议打印出来,仔细看下。 2.打开、关闭设备与查看相应信息: HANDLE m_hPex; DWORD Bus,Slot,Fun,Interrupt; DWORD BaseAddrCS0,BaseAddrCS1,BaseAddrCS2,BaseAddrCS3; DWORD RangeAddrCS0,RangeAddrCS1,RangeAddrCS2,RangeAddrCS3; //打开设备: WD_LICENSE lic; m_hPex=WD_Open(); if (m_hPex==INVALID_HANDLE_VALUE) { str="INVALID_HANDLE_VALUE"; } else { //重新注册wd,去除过期限制 strcpy(lic.cLicense, "你的注册号"); WD_License(m_hPex, &lic); } //检查WD版本 WD_VERSION ver; BZERO(ver); WD_Version(m_hPex, &ver);

if (ver.dwVer0) { pciSlot = pciScan.cardSlot[0]; WD_PCI_CARD_INFO pciCardInfo; WD_CARD Card; BZERO(pciCardInfo); pciCardInfo.pciSlot = pciSlot; WD_PciGetCardInfo (m_hPex, &pciCardInfo); if (pciCardInfo.Card.dwItems!=0) { Card = pciCardInfo.Card; } else

相关主题