ПОРТЫ и все с ними связанное
FreeBasic :: Программирование :: Общее
Страница 1 из 1
ПОРТЫ и все с ними связанное
Тема такая. Решил попробовать шину PCI на вкус. Ниже - код, в принципе работающий, но возвращающий одно и то же значение для всех устройств(-. Но такого быть не может. Кто нибудь сталкивался с этой темой?
Проблема наверное, в том, что не выходит вывести в порт 4 байта за раз. По частям, видимо нельзя.
giveio.sys юзать пока не хочу!
Проблема наверное, в том, что не выходит вывести в порт 4 байта за раз. По частям, видимо нельзя.
giveio.sys юзать пока не хочу!
- Код:
Type PCI_COORD Field=1
As UByte __unk:2
As UByte register:6 '0-63
As UByte func:3 '0-7
As UByte dev:5 '0-31
As UByte bus '0-255
As UByte __unk2:7
As UByte ok:1
End Type
Type Bytes Field=1
As UByte b1,b2,b3,b4
End Type
Function Read_PCI(ByVal bBus As UByte, ByVal bDev As UByte,ByVal bFunc As UByte,ByVal bRegister As UByte)As UInteger
Dim pci As PCI_COORD Ptr=New PCI_COORD
pci->bus=bBus
pci->dev=bDev
pci->func=bFunc
pci->register=bRegister
'ВОТ она, проблема!!!
Dim As Bytes Ptr dat=Cast(Bytes Ptr,pci)
'Dim As UInteger d=*Cast(UInteger Ptr,pci)
'sub Out(byval port as UShort, byval data as UByte)
'Out &hC8,d
Out &hC8,dat->b1
Out &hC8,dat->b2
Out &hC8,dat->b3
Out &hC8,dat->b4
Dim dwRes As UInteger=Inp(&hCFC)
If Bit(dwRes,31)=0 Then dwres=0
Delete pci
Return dwRes
End Function
For bus As UByte=0 To 255
Print "BUS #";Hex(bus,8);!"\n================================"
For dev As UByte=0 To 31
Print " DEV #";Hex(dev,8);!"\n ================================"
For func As UByte=0 To 7
Print " FUNC #";Hex(func,8);!"\n ================================"
Dim vID As UInteger=Read_PCI(bus,dev,func,2)
Print " Vendor ID=";Hex(vID,8);" (";Cast(Integer,vID);")"
Next
Next
Next
Sleep
End
VerhoLom- Сообщения : 67
Дата регистрации : 2010-07-06
Возраст : 42
FreeBasic :: Программирование :: Общее
Страница 1 из 1
Права доступа к этому форуму:
Вы не можете отвечать на сообщения
|
|