中介 MDD 到 SCSI 間的就是 BOT了 (果然)。
可以看到,跟USB Mass Storage Protocol 內容一樣,解開CBW 的就是BOT這一層
Pdd Initialize
USB PostInit - Mass Storage Class
BOT_InternalInit
BOT_ReadConfigurationValue
GetEndpointDescriptor
BOT_ReadConfigurationValue
BOT_TransferThread
BOT_DeviceNotify
..
BOT_ResetPipeState
BOT_DeviceNotify
BOT_HandleRequest
BOT_DeviceNotify
..
BOT_InternalInit 呼叫 UfnMdd_Start ( &BOT_DeviceNotify ... )
這樣就設定了 MDD 的pContext->lpDeviceNotify
enum.cpp:
- ProcessConfiguration( )會呼叫這個function : pContext->lpDeviceNotify( ).
- UfnMdd_Notify( )也會用SendDeiviceNotification( )呼叫 pContext->lpDeviceNotify( )
所以整個"Notify"的流向就是..
Pdd --> Mdd --> BOT
Pdd 送給 Mdd 的Notification Event:
- UFN_MSG_BUS_EVENT
- UFN_DETACH
- UFN_ATTACH
- UFN_RESET
- UFN_SUSPEND
- UFN_RESUME
- UFN_MSG_BUS_SPEED
- UFN_MSG_SETUP_PACKET
- UFN_MSG_PREPROCESSED_SETUP_PACKET
- UFN_MSG_SET_ADDRESS
- UFN_MSG_CONFIGURED
1 則留言:
Hello~~~
很高興拜讀你的心得,我有一點疑問想跟你請教,我現在在做wince 6.0 的 usb mass storage class. 但是我找不到誰去call CUfnBus::PostInit() 這個 function. 可以請你給些方向嗎?
張貼留言