WinDriver教程

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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";

}

WD_CARD_REGISTER cardReg;

//Card.Item[0]PC机基本端口操作

//Card.Item[1]中断信息

BZERO(cardReg);

cardReg.Card = Card;

cardReg.fCheckLockOnly = FALSE;

WD_CardRegister(m_hPex,&cardReg);

if (cardReg.hCard == 0)

{

str="cardReg=0";

}

str="open successfully";

//取得当前设备信息并显示

Interrupt=Card.Item[1].I.Int.dwInterrupt); Bus=pciScan.cardSlot[0].dwBus;

Slot=pciScan.cardSlot[0].dwSlot;

Fun=pciScan.cardSlot[0].dwFunction;

//CS0-CS3的地址映射信息

BaseAddrCS0=Card.Item[2].I.Mem.dwPhysicalAddr; RangeAddrCS0=Card.Item[2].I.Mem.dwBytes; BaseAddrCS1=Card.Item[3].I.IO.dwAddr; RangeAddrCS1=Card.Item[3].I.Mem.dwBytes; BaseAddrCS2=Card.Item[4].I.Mem.dwPhysicalAddr; RangeAddrCS2=Card.Item[4].I.Mem.dwBytes;

BaseAddrCS3=Card.Item[5].I.Mem.dwPhysicalAddr;

RangeAddrCS3=Card.Item[5].I.Mem.dwBytes; else

{

str="Open Failed";

WD_Close(m_hPex);

}

AfxMessageBox(str);

注:Card.Item[0-5]就是DEVICE/IO/MEM映射的地方,这里得到的值和windrive wizard里看到的是一样的。二、设备的读写操作

1.写操作

WD_TRANSFER trans;

BZERO(trans);

trans.cmdTrans = WP_BYTE; //(WORD/DWORD)

trans.dwPort = BaseAddrCS0;//可为其它的映射基地址

trans.Data.Byte = 0x00; //需要写的数据

WD_Transfer (m_hPex, &trans);

2.读操错

WD_TRANSFER trans;

BZERO(trans);

trans.cmdTrans = RP_BYTE; //(WORD/DWORD)

trans.dwPort = BaseAddrCS1;//可为其它的映射基地址

WD_Transfer (m_hPex, &trans);

return trans.Data.Bytes;

三、其它

相关文档
最新文档