?? pci.cpp
字號(hào):
BYTE PCI::GetBistReg(int funct_num, int bus_num)
{
DWORD value;
if(ReadConfigDWORD(12, &value, funct_num, bus_num) == PCI_FAIL)
return 0x00;
return((value>>24) & 0xFF);
}
/////////////////////////////////////////////////////
BYTE PCI::GetHeaderType(int funct_num, int bus_num)
{
DWORD value;
if(ReadConfigDWORD(12, &value, funct_num, bus_num) == PCI_FAIL)
return 0x00;
return((value>>16) & 0xFF);
}
/////////////////////////////////////////////////////
BYTE PCI::GetLatencyTimer(int funct_num, int bus_num)
{
DWORD value;
if(status != 0)
return PCI_FAIL;
if(ReadConfigDWORD(12, &value, funct_num, bus_num) == PCI_FAIL)
return 0x00;
return((value>>8) & 0xFF);
}
/////////////////////////////////////////////////////
BYTE PCI::GetCacheLineSize(int funct_num, int bus_num)
{
DWORD value;
if(ReadConfigDWORD(12, &value, funct_num, bus_num) == PCI_FAIL)
return 0x00;
return(value & 0xFF);
}
/////////////////////////////////////////////////////
DWORD PCI::GetBaseAddress(int address=0, int funct_num, int bus_num)
{
DWORD value;
if(address < 0 || address > 5)
address = 0;
if(ReadConfigDWORD(16+address*4, &value, funct_num, bus_num) == PCI_FAIL)
return 0x00000000;
return(value);
}
/////////////////////////////////////////////////////
DWORD PCI::GetCardBusCISPointerReg(int funct_num, int bus_num)
{
DWORD value;
if(ReadConfigDWORD(40, &value, funct_num, bus_num) == PCI_FAIL)
return 0x00000000;
return(value);
}
/////////////////////////////////////////////////////
WORD PCI::GetSubsystemID(int funct_num, int bus_num)
{
DWORD value;
if(ReadConfigDWORD(44, &value, funct_num, bus_num) == PCI_FAIL)
return 0x0000;
return((value>>16) & 0xFFFF);
}
/////////////////////////////////////////////////////
WORD PCI::GetSubsystemVendorID(int funct_num, int bus_num)
{
DWORD value;
if(ReadConfigDWORD(44, &value, funct_num, bus_num) == PCI_FAIL)
return 0x0000;
return(value & 0xFFFF);
}
/////////////////////////////////////////////////////
DWORD PCI::GetROMBaseAddress(int funct_num, int bus_num)
{
DWORD value;
if(ReadConfigDWORD(48, &value, funct_num, bus_num) == PCI_FAIL)
return 0x00000000;
return(value);
}
/////////////////////////////////////////////////////
BYTE PCI::GetMaxLat(int funct_num, int bus_num)
{
DWORD value;
if(ReadConfigDWORD(60, &value, funct_num, bus_num) == PCI_FAIL)
return 0x00;
return((value>>24) & 0xFF);
}
/////////////////////////////////////////////////////
BYTE PCI::GetMinGnt(int funct_num, int bus_num)
{
DWORD value;
if(ReadConfigDWORD(60, &value, funct_num, bus_num) == PCI_FAIL)
return 0x00;
return((value>>16) & 0xFF);
}
/////////////////////////////////////////////////////
BYTE PCI::GetInterruptPin(int funct_num, int bus_num)
{
DWORD value;
if(ReadConfigDWORD(60, &value, funct_num, bus_num) == PCI_FAIL)
return 0x00;
return((value>>8) & 0xFF);
}
/////////////////////////////////////////////////////
BYTE PCI::GetInterruptLine(int funct_num, int bus_num)
{
DWORD value;
if(ReadConfigDWORD(60, &value, funct_num, bus_num) == PCI_FAIL)
return 0x00;
return(value & 0xFF);
}
/////////////////////////////////////////////////////
void PCI::SetCommandReg(WORD set_value, int funct_num, int bus_num)
{
DWORD value;
if(ReadConfigDWORD(4, &value, funct_num, bus_num) == PCI_FAIL)
return;
value = (value & 0xFFFF0000) | set_value;
WriteConfigDWORD(4, value, funct_num, bus_num);
}
/////////////////////////////////////////////////////
BOOL PCI::IsIOAccess(int funct_num, int bus_num)
{
WORD value;
value = GetCommandReg(funct_num, bus_num);
return((value & 0x001) ? TRUE : FALSE);
}
/////////////////////////////////////////////////////
BOOL PCI::IsMemoryAccess(int funct_num, int bus_num)
{
WORD value;
value = GetCommandReg(funct_num, bus_num);
return((value & 0x002) ? TRUE : FALSE);
}
/////////////////////////////////////////////////////
BOOL PCI::IsMaster(int funct_num, int bus_num)
{
WORD value;
value = GetCommandReg(funct_num, bus_num);
return((value & 0x004) ? TRUE : FALSE);
}
/////////////////////////////////////////////////////
BOOL PCI::IsSpecialCycle(int funct_num, int bus_num)
{
WORD value;
value = GetCommandReg(funct_num, bus_num);
return((value & 0x008) ? TRUE : FALSE);
}
/////////////////////////////////////////////////////
BOOL PCI::IsMemoryWriteInval(int funct_num, int bus_num)
{
WORD value;
value = GetCommandReg(funct_num, bus_num);
return((value & 0x010) ? TRUE : FALSE);
}
/////////////////////////////////////////////////////
BOOL PCI::IsVGAPaletteSnoop(int funct_num, int bus_num)
{
WORD value;
value = GetCommandReg(funct_num, bus_num);
return((value & 0x020) ? TRUE : FALSE);
}
/////////////////////////////////////////////////////
BOOL PCI::IsParityError(int funct_num, int bus_num)
{
WORD value;
value = GetCommandReg(funct_num, bus_num);
return((value & 0x040) ? TRUE : FALSE);
}
/////////////////////////////////////////////////////
BOOL PCI::IsWaitCycle(int funct_num, int bus_num)
{
WORD value;
value = GetCommandReg(funct_num, bus_num);
return((value & 0x080) ? TRUE : FALSE);
}
/////////////////////////////////////////////////////
BOOL PCI::IsSystemError(int funct_num, int bus_num)
{
WORD value;
value = GetCommandReg(funct_num, bus_num);
return((value & 0x100) ? TRUE : FALSE);
}
/////////////////////////////////////////////////////
BOOL PCI::IsFastBackToBack(int funct_num, int bus_num)
{
WORD value;
value = GetCommandReg(funct_num, bus_num);
return((value & 0x200) ? TRUE : FALSE);
}
/////////////////////////////////////////////////////
void PCI::SetIOAccess(BOOL set_value, int funct_num, int bus_num)
{
WORD value;
value = GetCommandReg(funct_num, bus_num);
value &= 0xFFFE;
if(set_value != FALSE)
value |= 0x001;
SetCommandReg(value, funct_num, bus_num);
}
/////////////////////////////////////////////////////
void PCI::SetMemoryAccess(BOOL set_value, int funct_num, int bus_num)
{
WORD value;
value = GetCommandReg(funct_num, bus_num);
value &= 0xFFFD;
if(set_value != FALSE)
value |= 0x002;
SetCommandReg(value, funct_num, bus_num);
}
/////////////////////////////////////////////////////
void PCI::SetMaster(BOOL set_value, int funct_num, int bus_num)
{
WORD value;
value = GetCommandReg(funct_num, bus_num);
value &= 0xFFFB;
if(set_value != FALSE)
value |= 0x004;
SetCommandReg(value, funct_num, bus_num);
}
/////////////////////////////////////////////////////
void PCI::SetSpecialCycle(BOOL set_value, int funct_num, int bus_num)
{
WORD value;
value = GetCommandReg(funct_num, bus_num);
value &= 0xFFF7;
if(set_value != FALSE)
value |= 0x008;
SetCommandReg(value, funct_num, bus_num);
}
/////////////////////////////////////////////////////
void PCI::SetMemoryWriteInval(BOOL set_value, int funct_num, int bus_num)
{
WORD value;
value = GetCommandReg(funct_num, bus_num);
value &= 0xFFEF;
if(set_value != FALSE)
value |= 0x010;
SetCommandReg(value, funct_num, bus_num);
}
/////////////////////////////////////////////////////
void PCI::SetVGAPaletteSnoop(BOOL set_value, int funct_num, int bus_num)
{
WORD value;
value = GetCommandReg(funct_num, bus_num);
value &= 0xFFDF;
if(set_value != FALSE)
value |= 0x020;
SetCommandReg(value, funct_num, bus_num);
}
/////////////////////////////////////////////////////
void PCI::SetParityError(BOOL set_value, int funct_num, int bus_num)
{
WORD value;
value = GetCommandReg(funct_num, bus_num);
value &= 0xFFBF;
if(set_value != FALSE)
value |= 0x040;
SetCommandReg(value, funct_num, bus_num);
}
/////////////////////////////////////////////////////
void PCI::SetWaitCycle(BOOL set_value, int funct_num, int bus_num)
{
WORD value;
value = GetCommandReg(funct_num, bus_num);
value &= 0xFF7F;
if(set_value != FALSE)
value |= 0x080;
SetCommandReg(value, funct_num, bus_num);
}
/////////////////////////////////////////////////////
void PCI::SetSystemError(BOOL set_value, int funct_num, int bus_num)
{
WORD value;
value = GetCommandReg(funct_num, bus_num);
value &= 0xFEFF;
if(set_value != FALSE)
value |= 0x100;
SetCommandReg(value, funct_num, bus_num);
}
/////////////////////////////////////////////////////
void PCI::SetFastBackToBack(BOOL set_value, int funct_num, int bus_num)
{
WORD value;
value = GetCommandReg(funct_num, bus_num);
value &= 0xFDFF;
if(set_value != FALSE)
value |= 0x200;
SetCommandReg(value, funct_num, bus_num);
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -