Windows下DLL編程技術及應用

來源:互聯網
上載者:User

摘 要: 本文介紹了DLL技術在Windows編程中的基本運用方法及應用,給出了直接記憶體存取及連接埠I/O的兩個實用DLL的全部原始碼。

關鍵詞: DLL Windows編程 記憶體訪問 I/O

一 、引 言

由於Windows為微機提供了前所未有的標準使用者介面、圖形處理能力和簡單靈便的操作,絕大多數程式編製人員都已轉向或正在轉向Windows編程。在許多使用者設計的實際應用系統的編程任務中,常常要實現軟體對硬體資源和記憶體資源的訪問,例如連接埠I/O、DMA、中斷、直接記憶體存取等等 。若是編製DOS程式,這是輕而易舉事情,但要是編製Windows程式,尤其是WindowsNT環境下的程式,就會顯得較困難。

因為Windows具有"與裝置無關"的特性,不提倡與機器底層的東西打交道,如果直接用Windows的 API函數或I/O讀寫指令進行訪問和操作,程式運行時往往就會產生保護模式錯誤甚至死機,更嚴重的情況會導致系統崩潰。那麼在Windows下怎樣方便地解決上述問題呢?用DLL(Dynamic Link Libraries)技術就是良好途徑之一。

DLL是Windows最重要的組成要素,Windows中的許多新功能、新特性都是通過DLL來實現的,因此掌握它、應用它是非常重要的。其實Windows本身就是由許多的DLL組成的,它最基本的三大組成模組Kernel、GDI和User 都是DLL,它所有的庫模組也都設計成DLL。凡是以.DLL、.DRV、.FON、.SYS和許多以.EXE為副檔名的系統檔案都是DLL,要是開啟Windows\System目錄,就可以看到許多的DLL模組。儘管DLL在Ring3優先順序下運行,仍是實現硬體介面的簡便途徑。DLL可以有自己的資料區段,但沒有自己的堆棧,使用與調用它的應用程式相同的堆棧模式,減少了編程設計上的不便;同時,一個DLL在記憶體中只有一個執行個體,使之能高效經濟地使用記憶體;DLL實現的代碼封裝性,使得程式簡潔明晰;此外還有一個最大的特點,即DLL的編製與具體的程式設計語言及編譯器無關,只要遵守DLL的開發規範和編程策略,並安排正確的調用介面,不管用何種程式設計語言編製的DLL都具有通用性。例如在BC31中編製的DLL程式,可用於BC、VC、VB、Delphi等多種語言環境中。筆者在BC31環境下編譯了Windows下直接記憶體存取和連接埠I/O兩個DLL,用在多個自製系統的應用軟體中,

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.