1. Driver 算是應用層嗎?? 不過不改原來 serial port 的 driver, 而是架在它上面增加自己的功能, 這樣看也算是應用層的...
2. 寫 2 支 driver, registry 略如下
2.1 呼叫 CreateFile(L"COM1:",..), 並負責 protocol layer 及實際 COM port r/w 的處理
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\Serialx]
"Dll"="SerialDispatch.Dll"
"Order"=dword:80 ;; must be larger than Serial.Dll
"Priority256"=dword:67
"Flags"=8 ; DEVFLAGS_NAKEDENTRIES, Entry points don't have Prefix prepended
2.2 創建出 COM port 應有的介面 (參考 Microsoft serial port MDD code), 並與 SerialDispatch.Dll 透過 Point-to-Point Message Queue 做溝通
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\Serial3]
"Prefix"="COM"
"Dll"="VirtualSerial.Dll"
"Order"=dword:81 ;; must be larger than SerialDispatch.Dll
"Priority256"=dword:67
"Index"=dword:3
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\Serial4]
"Prefix"="COM"
"Dll"="VirtualSerial.Dll"
"Order"=dword:81 ;; must be larger than SerialDispatch.Dll
"Priority256"=dword:67
"Index"=dword:4