HCD中Root Hub物件的初始化

weixin_34391854發表於2011-03-31

前面有篇文章,說到了如何獲取USB裝置的Descriptor。其中有一個步,通過呼叫CHcd類的成員變數m_pCRootHub(CRootHub)的GetDeviceList函式,來獲取Root Hub上裝置列表。此處的Root Hub是在什麼地方被初始化的呢?

 

1、搜尋程式碼發現,類CHcd中有一個成員函式SetRootHub,會給m_pCRootHub賦值。

 

2、類CEhcd的成員函式DeviceInitialize,會建立一個CRootHub類的物件,並將該物件作為引數,呼叫函式SetRootHub。

SetRootHub( new CRootHub( deviceInfo, FALSE,TRUE, usbHubDescriptor,this ));

類的繼承關係:CEhcd -> CHW -> CHcd。

 

3、函式DeviceInitialize在HcdMdd_CreateHcdObject函式中被呼叫。HcdMdd_CreateHcdObject函式,首先呼叫CreateHCDObject函式建立HCD物件,然後呼叫該HCD物件的DeviceInitialize函式。

 

4、函式InitializeEHCI中呼叫了函式HcdMdd_CreateHcdObject。

 

5、函式HcdPdd_Init呼叫了函式InitializeEHCI。

 

6、函式HCD_Init呼叫了函式HcdPdd_Init。

 

7、函式OTG_Init中呼叫了函式HCD_Init。

相關文章