fighter212
驱动牛犊
驱动牛犊
  • 注册日期2003-07-05
  • 最后登录2006-05-18
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:997回复:1

弱弱的问一个pci卡vxd程序中设备识别的问题

楼主#
更多 发布于:2003-09-14 16:29
已知DeviceId和VendorId,如果不要inf文件,请问怎么识别pci设备阿,是在OnSysDynamicDeviceInit()函数中呢,还是在OnW32DeviceIoControl()函数中,DeviceId和VendorId如何使用。那位大虾能指点一二,如最好能够给出一段简单的代码,小弟谢了先。
阿蒙
kenail
驱动牛犊
驱动牛犊
  • 注册日期2003-03-25
  • 最后登录2007-10-11
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-09-18 12:35
直接扫描:for(int tmp=0x80000000; tmp<0x80ffff00+1; tmp+=0x100)
{
_outpd(0x0cf8,tmp);
Testid=_inpd(0x0cfc);
if(Testid==0xac60104c) // 0xac60104c 为PCI2040的/device id and vendor id
{
printf(\"\\n ...Find PCI2040 Card\\n\");
fprintf(fp_info,\" Find PCI2040 Card\\n\");

printf(\"Testid is: %08lx\\n\",Testid);
fprintf(fp_info,\"Testid is: %08lx\\n\",Testid);

printf(\"The bus line ID and device ID is  %08lx\\n\", tmp);
fprintf(fp_info,\"The bus line ID and device ID is  %08lx\\n\", tmp);

CONFIGUEREG=tmp;       //得到配置空间首地址
 
////////////////command register(命令寄存器)
_outpd(0x0cf8,CONFIGUEREG+0x04);
command=_inpw(0x0cfc);
printf(\"Testcommmand is %04x\",command);
fprintf(fp_info,\"Testcommmand is %04x\",command);
command=command|0x0143;         /*command bit0 为I/O Space位
                                               0:允许硬件映射I/O,1:不允许I/O
 bit1  为Memory Space位
        0:允许硬件映射Memory,1:不允许Memory
 bit6   为奇偶错误控制位
        0:忽略奇偶错误,1:显示奇偶错误于PCISR[15]
 bit8   为SERR#使能位
*/

  _outpd(0x0cf8,CONFIGUEREG+0x04);  
_outpw(0x0cfc,command);        //写命令字
_outpd(0x0cf8,CONFIGUEREG+0x04);
command=_inpw(0x0cfc);
printf(\"--(set)->  %04x\\n\",command); //输出命令字
fprintf(fp_info,\"  --(set)->  %04x\\n\",command);
break;
}
}
  
    if(CONFIGUEREG == 0 ) //if 未找到PCI2040 Chip,then return
  {
printf(\"\\nNo PCI2040 Card\\n\");
fprintf(fp_info,\"\\nNo PCI2040 Card\\n\");
fclose(fp_info);
exit(2) ;
}
游客

返回顶部