PTT
Submit
Submit
選擇語言
正體中文
简体中文
PTT
C_and_CPP
[問題] API怎看T_T
作者:
kingofsdtw
(ä¸èƒ½é–’下來!!)
2014-06-16 10:36:43
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
C
程式碼(Code):(請善用置底文網頁, 記得排版)
補充說明(Supplement):
求救一下小公司頂天沒人可以問...@Q@
要取得 PciVidDid 但是不知道API看不是很懂程式為何這樣寫
老人用的Function:
Status = PciIo->Pci.Read(PciIo, EfiPciIoWidthUint32, 0, 1, &ROMVidDid);
必須要知道 5個參數要輸入啥
PciIo->Pci.Read(PciIo, EfiPciIoWidthUint32, 0, 1, &ROMVidDid);
==>追蹤到
IN EFI_PCI_IO_PROTOCOL *PciIo
(1. IN 是啥呢...C語言好像沒這東西..這是啥呢?)
==>追蹤到
typedef struct _EFI_PCI_IO_PROTOCOL {
EFI_PCI_IO_PROTOCOL_CONFIG_ACCESS Pci;
} EFI_PCI_IO_PROTOCOL;
==>追蹤到
typedef struct {
EFI_PCI_IO_PROTOCOL_CONFIG Read;
EFI_PCI_IO_PROTOCOL_CONFIG Write;
} EFI_PCI_IO_PROTOCOL_CONFIG_ACCESS;
==>追蹤到
typedef
EFI_STATUS
(EFIAPI *EFI_PCI_IO_PROTOCOL_CONFIG) (
IN struct _EFI_PCI_IO_PROTOCOL *This,
IN EFI_PCI_IO_PROTOCOL_WIDTH Width,
IN UINT32 Offset,
IN UINTN Count,
IN OUT VOID *Buffer
);
得知: *This,Width,Offset.*Buffer
未知: Count功能
2. typedef structA (structB *ptr)(.....); 這啥怪獸? 傻眼...@_@
3. IN OUT VOID *Buffer 這是啥鬼T_T? 哭哭...
延伸:想知道EFIAPI是啥
==>追蹤到
typedef unsigned int EFI_STATUS;
EFIAPI (4000多個...看不下去GG!!)
作者:
Killercat
(殺人貓™)
2014-06-16 11:31:00
IN OUT應該都是null macro 拿來作註解用的告訴你這個參數是傳入值還是傳出值都頂天了 也會trace code了 要學會追macro阿....也有少數幾個例外是拿來當meta data的 不過這邊看起來應該就只是單純的指示跟註解用途而已
作者:
james732
(好人超)
2014-06-16 12:45:00
做BIOS的XD
作者:
donkeychen
(Bad_To_The_Bone)
2014-06-16 18:50:00
GOOGLE EFI UEFI 這應該是intel給的code吧
作者:
EdisonX
(卡卡獸)
2014-06-16 21:49:00
google, function pointer, 這寫法我覺得還蠻漂亮的啊~
作者:
RealJack
2014-06-16 23:13:00
" target="_blank" rel="nofollow">
以上討論EFIAPI的定義,研究一下吧
作者:
azureblaze
(AzureBlaze)
2014-06-16 23:20:00
EFIAPI是calling convention不是type所以你的type2不存在calling convention是函數的特殊屬性決定呼叫函數時底層組語的產生方式
http://en.wikipedia.org/wiki/X86_calling_convention
作者:
Bencrie
2014-06-17 01:13:00
算 ABI 吧
作者: ariesd (台中長頸鹿)
2014-06-17 17:25:00
這是BIOS C code最基礎的了,不會的話,那你有得忙了...
作者:
donkeychen
(Bad_To_The_Bone)
2014-06-18 09:44:00
如果你是要寫BIOS 那你去找個CODE裡面一定有用這個的範例 如法炮製就可以了(吧) 如果你是要trace EFI的架構那就很花時間了 還得先懂 PEI DXE .....如果你是不懂PciVidDid 那可能得去看PCI的spec了我覺得來這版問應該是要TRACE 但是聽你敘述像是做BIOS可能只需要改Offset跟Count而已
繼續閱讀
[問題] 沒return為何function會回傳值?
bizza
[討論] 如何寫出一個史上最長的hello world
jack710619
Re: [問題] eclipse已經沒Qt plugin??
uranusjr
[問題] eclipse已經沒Qt plugin??
wandog
[討論] 自動玩2048
noodleT
Re: [問題] DevC++期末求助
firejox
Re: [問題] 想請教BCB中使用OLE的EXCEL插入物件
alice0520
[問題] [UVA][烏龜塔] 10154 - Weights and Meas
sersus
Re: [問題] DevC++期末求助
yuanyu90221
[問題] 使用TPrinter列印
dukedexter
Links
booklink
Contact Us: admin [ a t ] ucptt.com