windows 2000/xp WDM裝置驅動程式開發 (2)

來源:互聯網
上載者:User

標籤:執行個體   int   組件   瓶頸   system   管理   序列化   work   電源管理   

4. WDM環境  

  a  安裝VC6.0;

  b  安裝相應作業系統的DDK(組件一定要全選);

  c  安裝DriverStudio;

  d  用VC6.0開啟Compuware\Driver Studio\DriverWorks\Source\VdwLibs.dsw工程;

1)用DriverStudio的driverWizard來建立工程

   建立RegSample完後編譯出現錯誤,刪掉沒有的函數,然後去掉了ntstrsafe.lib 連結庫

2)EzDriverInstaller (driverstudio)安裝 inf

3)表徵圖,-20是 

                -5是 

     註冊表的HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Class 可以更改對應的表徵圖

4) 打log, KTrace, KDebugOnlyTrace, DbgPrint

    USB2.0 最高60MB/s黑色或白色介面,3.0是600MB/s藍色, 

5. 驅動和應用的通訊

5.1 開啟裝置 createFile(), 用GUID或符號連結

           同步:FILE_ATTRIBUTE_NORMAL

           非同步:FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED, 

     關閉裝置 closeHandle(), 產生 IRP_MJ_CLEANUP 和 IRP_MJ_CLOSE, 應用程式Ctrl_C強行退出和出錯退出都產生這兩個IRP

     DeviceIoControl(), 非同步呼叫waitForSingleObject來等待IO完成

    

   readFile, writeFile, 

   

  

  5.2 驅動和應用通訊

  WDM兩種方法:

   1)非同步完成IRP,intrdemo DS的例子,沒看

   2)win32事件(就是createEvent),charFilter例子,沒看

 

6. 常見編程技術

6.1 字串

   CHAR, WCHAR, ANSI_STRING, UNICODE_STRING

   KUstring類

6.2 記憶體

  非分頁式記憶體 m_image = new(NonPagedPool) UCHAR[m_size];

  KMemory類,為記憶體描述符表MDL提供服務,

  KHeap類記憶體堆,比較大塊

6.9 CancelSpinLock類, 全域取消自旋鎖是瓶頸,CPU在等待自旋鎖的時候什麼也不能幹。 可用IoSetCancelRoutine來代替

6.10 KSpinLock類,可以阻塞其他線程

6.12 timerSample, FileThread

      執行個體模仿driverMonitor來列印log

 

7. PNP 隨插即用常式

  啟動、停止、刪除裝置, DW自動產生這三常式

8. 電源管理

9. WMI 系統管理

10. IRP序列化

 1) driverworks提供了KDeviceQueue,

  KDevice::QueueIrp(),irp入隊; 若隊列閑則調用StartIo

 KDriverManagedQueueEx用於自己管理多個隊列

  startIoChar_Driver執行個體

11. WDM過濾器驅動

  和普通驅動一樣,都有DriverEntry,addDevice等,用裝置堆疊來分層

  上層驅動用於添加附加功能

  下層驅動用於協助寫一個匯流排無關的驅動,如PCI匯流排、USB匯流排可以統一成一個匯流排結構的功能驅動

12 USB裝置開發

   裝置介面暴露一個或多個端點,有四種:批量,控制,中斷,同步

   0號端點:預設的控制方法,

   事務由一個或多個階段組成,階段有三種:令牌、資料、握手

   (待續)

13. PCI裝置驅動

   xp86的IO地址有64KB,而記憶體位址空間4GB

   KMemoryRange, KIoRange

   KPciConfiguration

   connect() , 把中斷對象和插斷服務常式串連起來

   DMA傳輸

 1)執行個體

    a) PCI9054介面卡,採用PLX公司的PCI9054晶片,局部匯流排介面模式為C模式,9054局部匯流排訊號線和FPGA晶片相連。

    裝置要訪問的資源:前兩個固定用於9054的操作寄存器;第三個為IO映射空間,用於裝置訪問

    b) FPGA有FIFO,DMA採用塊模式

    c) 9054執行個體過程:先IO指令寫32位元組到FIFO,然後DMA塊傳輸讀

    d) DMAsample

 

 

 

 

   

windows 2000/xp WDM裝置驅動程式開發 (2)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.