阅读:997回复:1
弱弱的问一个pci卡vxd程序中设备识别的问题
已知DeviceId和VendorId,如果不要inf文件,请问怎么识别pci设备阿,是在OnSysDynamicDeviceInit()函数中呢,还是在OnW32DeviceIoControl()函数中,DeviceId和VendorId如何使用。那位大虾能指点一二,如最好能够给出一段简单的代码,小弟谢了先。
|
|
|
沙发#
发布于: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) ; } |
|