USB轉COM驅動的編寫實現有很多中方法,最近在網絡上看到一個最常用的方式,即是虛擬一個COM口,在COM初試的時候進行打開一個USB設備.
當USB串COM口驅動處理Write和Read 等IRQ的時候,其實是去讀寫USB 設備驅動,讀寫方式是直接採用ZwReadFile和ZwWriteFile函數.但是真正的實現也不是這麼簡單,真實的實現是開闢一個線程和一段較大的緩衝區,線程用於適時讀取USB設備的數據並保存在緩衝區當中.當上層應用程序向這個虛擬的COM口發送READ IRP(IRP_MJ_READ)的時候,則直接從這段緩衝區中讀取數據返回即可.當然還不要忘記處理超時的問題處理.
因此USB轉COM驅動在INF文件加載的時候實際上需要加載兩個驅動程序,一個是USB驅動,對應與USB設備的VID和PID,另外一個就是COM虛擬驅動程序,需要對應設置COM口號.如下將對關鍵代碼列出;
- 創建COM口設備對象
- 獲取USB設備名稱用於打開設備
- 打開USB設備端口
其他的驅動程序處理都是常規處理,在這裏就不多做介紹!