關於USB端點,寫得不錯——收錄一下…
阿新 • • 發佈:2019-01-29
管道是一個USB通訊裝置上的一個端點和主機上軟體之間的聯絡。體現了主機快取和端點間傳送資料的能力。有流和訊息兩種不同且互斥的管道通訊格式。流指不具有USB定義格式的資料流。流通道中的資料是流的形式,也就是該資料的內容不具有USB要求的結構。資料從流通道一端流進的順序與它們從流通道另一端流出時的順序是一樣的,流通道中的通訊流總是單方向的。對於在流通道中傳送的資料,USB認為它來自同一個客戶。USB系統軟體不能夠提供使用同一流通道的多個客戶的同步控制。在流通道中傳送的資料遵循先進先出原則。流管道只能連到一個固定號碼的端點上,或者流進,或者流出。而具有這個號碼的另一個方向的端點可以被分配給其它流通道。流通道支援同步傳送,中斷傳送和批量傳送;訊息指具有某種USB定義的格式的資料流。訊息通道與端點的關係同流通道與端點的關係是不同的。首先,主機向USB裝置發出一個請求;接著,就是資料的傳送;最後,是一個狀態階段。為了能夠容納請求/資料/狀態的變化,訊息通道要求資料有一個格式,此格式保證了命令能夠被可靠地傳送和確認。訊息通道允許雙方向的資訊流,雖然大多數的通訊流是單方向的。特別地,預設控制通道也是一個訊息通道。當客戶程式通過USB管道傳送或接收資料時,它首先呼叫Win32 APl,呼叫最終將使功能驅動程式收到一個IRP。而驅動程式的工作就是把客戶的請求引導到有正確端點的管道上。它把請求提交到匯流排驅動程式,匯流排驅動程式再把請求分解成多個事務,然後這些事務被送往匯流排。總線上的資訊流以每毫秒一幀資料的形式流動。匯流排驅動程式必須安排好多個事務以使它們能被裝入同一幀中。