大家好,前面,我們已經講了開發網絡驅動應用一些基本具備的技能。現在我們一起探討下Windows下驅動的構架和相關部分。主要是包括三部分:
A Windows的系統構架
B Windows驅動的類型
C Windows組件
對各個介紹不是非常的詳細,望大家能理解。有興趣的朋友可以參考相關資料,做比較詳細的瞭解。對以後的開發有總體上的認識。能把握住方向。少走彎路。廢話少說,我們就進入主體吧。
A 首先我們瞭解Windows的系統構架
每個組件的功能在此我就不用敘述。有興趣的朋友可以參考Windows驅動的相關開發資料。常用的如DDK.
接下來我們需要了解Windows驅動的類型,可以分爲用戶模式(User-Model)與內核(Kernel-Model)
以下是關於原文的引用敘述如下:There are two basic kinds of Windows drivers:
User-mode drivers (such as some printer driver components, along with Win32® VDDs for MS-DOS® applications and application-dedicated devices) or another protected subsystem's drivers.
Kernel-mode drivers for logical, virtual, or physical devices. These drivers run as part of the Executive, which consists of kernel-mode operating system components that manage I/O, Plug and Play, memory, processes and threads, security, and so on.
Some kernel-mode drivers are also WDM drivers, All WDM drivers are PnP drivers that support power management. WDM drivers are source-compatible (but not binary-compatible) across the Microsoft Windows® 98/Me and Windows 2000 and later operating systems.
Type Of Kernel-Driver P2.2
每種驅動類型,我們要明白大致的作用。它可以幫助我們瞭解我們自己要編寫的驅動屬於那種類型。
正如上圖所示,對於內核驅動大致又可以分爲3中類型(引用原文)如下:
1 Highest level drivers, such as the system-supplied FAT, NTFS, and CDFS file system drivers (FSDs). Highest-level drivers always depend on support from underlying lower level drivers.
2 Intermediate drivers, such as a virtual disk, mirror, or device-type-specific class driver. Intermediate drivers also depend on support from underlying lower level drivers.
3 Lowest-level drivers, such as PnP hardware bus drivers that control an I/O bus on which some number of peripheral devices are connected. Lowest-level drivers do not depend on lower-level drivers, but control a physical peripheral device such as a bus.
以上部分簡單的敘述了各種驅動的功能及應用。
Windows Component Overview(p2.3)
該圖從總體上說明了驅動由用戶模式到內核模式的一個接口,轉換。最後到達硬件。以上介紹的都是從總體上,一個大體的概念,對系統整體的認識,對它的理解有助於我們後期的快速學習。就以以上爲例,用戶應用程序通過Win32 API接口發起調用一般通過CreatFile建立一個句柄,如果建立成功,則通過驅動程序倒出的接口一般都根據功能提供響應的命令控制字(I/O control code)進行調用,用戶模式應用程序就可以與驅動進行通訊,傳遞數據並進行相關的控制。應用層主要是用DeviceIoControl進行相關的命令控制字(I/O control code)的調用。驅動和應用層的通訊,在後邊還會做比較詳細的討論。
好拉,由於時間問題,今天就到此爲止。有興趣的朋友可以參考相關的文檔。本人樂意與其討論交流,共同進步。有很多不對的地方望大家批評指出。謝謝!