axsoft
版主
發表:681 回覆:1056 積分:969 註冊:2002-03-13
發送簡訊給我
|
控制pci介面卡要如何做呢? 作者:新天行者 可參考以下DDK程式
可透過PCI CONFIGURATION SPACE 抓到 此 PCI 卡之 BASE ADDRESS, IRQ ,等等,
前題是需知道
這張卡之 PCI Vendor & Device ID , 之後即可用 WRITE_PORT_USHORT()
or READ_PORT_USHORT()
去讀寫 BASE ADDRESS Offset registers ,你需先研讀此卡之 SPEC.
NTSTATUS SerialGetPCIConfigInfo(
OUT PULONG portAddress,
OUT PULONG portIRQ,
OUT PULONG BusNumber
)
{
ULONG dwDeviceNum = 0x80000000, dwDeviceID;
ULONG i;
for(i = 0; i < 0x300; i )
{
WRITE_PORT_ULONG((ULONG *)0x0CF8, dwDeviceNum);
dwDeviceID = READ_PORT_ULONG((ULONG *)0x0CFC);
if(dwDeviceID == 0x????????))
{
WRITE_PORT_ULONG((ULONG *)0x0CF8, dwDeviceNum 0x10);
*portAddress = READ_PORT_ULONG((ULONG *)0x0CFC) & 0xFFF0;
WRITE_PORT_ULONG((ULONG *)0x0CF8, dwDeviceNum 0x3C);
*portIRQ = READ_PORT_UCHAR((UCHAR *)0x0CFC);
*BusNumber = (dwDeviceNum - 0x80000000) >> 16;
}
dwDeviceNum = 0x100;
}
}
時間就是金錢---[ 發問前請先找找舊文章]
|