虚拟USB设备总结
開發環境:windows
首先來總結最近研究的虛擬USB設備,進而虛擬USB鍵盤成功了,開心!
得出了一個C/S框架,首先說一下客戶端
客戶端有兩個部分,用戶空間工具和底層虛擬總線驅動;
在本文件中?我們將 它們分別指向 用戶空間工具 和 底層虛擬總線驅動。首先,用戶啟動用戶空間工具來查詢導出的來自服務器的USB 設備 ,如果有可用的設備,他或她可能會決定導入設備。如果入口請求成功, ?用戶空間工具 會向 底層虛擬總線驅動 發送一個 IRP,通知它創建一個物理設備對象 。
它代表 插入客戶端計算機的真實USB 設備。當然,沒有真正的設備附加到客戶端機器,但我們的系統 會在不知情的情況下將其視為真實機器。然后系統將發送許多 IRP 到 我們用于查詢目的的虛擬總線驅動程序, 例如設備能力查詢、設備硬件 ID 查詢等
有些查詢與服務器端的實際設備無關 ,我們的虛擬總線驅動程序會馬上完成它們。但是當用戶訪問遠程 USB 設備上的數據存儲時 ,我們的總線驅動程序會收到 IRP?那些與 URB(USB 請求塊)相關的數據,總線驅動程序不能 立即給她返回所需的數據。
在這種情況下,底層虛擬總線驅動 將查找是否有來自 用戶空間工具的掛起讀取 請求,如果?
(1):
確實有一個待處理的讀取請求;底層虛擬總線驅動將使用 URB 正確地提供讀取任務,IRP 是入隊 并設置為掛起狀態。到這個時候,用戶空間工具的讀操作會成功返回,?然后 用戶空間工具?將根據客戶端和服務器之間的協議將 URB嵌入 到一個包中并發送這個?打包到服務器。用戶空間工具 總是 在一個套接字上等待,當它從服務器接收到一個包時,它會調用?WriteFile() API 將包寫入我們的虛擬 USB 設備。收到寫 IRP 后,底層虛擬總線驅動 得到來自這個寫 IRP 的數據并將適當的數據提供給前一個掛起的 IRP ?,然后那個掛起的 IRP 將成功完成后,它將隨后出隊。 ?
(2):?
沒有掛起的讀請求;IRP 將入隊并設置為掛起狀態。如果來了一段時間后來自 用戶空間工具 的讀取請求,底層虛擬總線驅動 將搜索隊列以獲取尚未發送到服務器的 IRP。當它找到一個時,它將向讀取操作提供信息,從發現的 IRP 開始,所有后續行為都將與上述 (1) 完全相同。
服務端待續更新。。。。
總結
 
                            
                        - 上一篇: 算是有点耐心了
- 下一篇: 锐捷服务器无线认证配置,【WLAN从入门
