Các kiểu Driver
Một số loại của mẫu các trình điều khiển một hệ thống XP Windows đầy đủ. Hình 1-4 những sơ đồ riêng biệt của chúng. Một trình điều khiển thiết bị ảo(VDD) là một thành phần user-mode điều đó cho phép các ứng dụng ...
Một số loại của mẫu các trình điều khiển một hệ thống XP Windows đầy đủ. Hình 1-4 những sơ đồ riêng biệt của chúng.

- Một trình điều khiển thiết bị ảo(VDD) là một thành phần user-mode điều đó cho phép các ứng dụng MS-DOS-based truy cập phần cứng trên các nền tảng Intel x86. Một VDD tin vào mặt nạ cho phép trên vào/ra để bẫy sự truy nhập cổng, và nó thực chất mô phỏng thao tác của phần cứng cho lợi ích của các ứng dụng điều đó trực tiếp trước đấy được chương trình hóa để nói tới phần cứng trên một máy tối thiểu. Đừng nhầm lẫn một Windows XP VDD với một Windows 98/Me VxD. Cả hai được gọi là những bộ điều khiển thiết bị thực tế, và họ phục vụ cùng mục đích cơ bản phần cứng thực tế, nhưng họ thuê công nghệ phần mềm hoàn toàn khác nhau.
- Những loại trình điều khiển thiết bị kernel-mode bao gồm một số loại con. Một trình điều khiển PnP là một trình điều khiển kernel-mode mà hiểu các giao thức Plug and Play của Windows XP. Để hoàn toàn chính xác, sách này liên quan những trình điều khiển PnP và không có gì khác.
- Một trình điều khiển WDM là một trình điều khiển PnP mà đồng thời hiểu các giao thức power-management và là nguồn thích hợp với cả Windows 98/Me và Windows 2000/XP. Bên trong phạm trù của trình điều khiển WDM, bạn có thể cũng phân biệt giữa lớp những trình điều khiển (mà quản lý một thiết bị thuộc về lớp được định nghĩa kỹ nào đó của thiết bị) và những trình điều khiển nhỏ (trợ giúp vendor-specific về nhà cung cấp tới một lớp bộ phận điều khiển), và giữa những trình điều khiển chức năng nguyên khối (mà gồm mọi thứ chức năng cần hỗ trợ một thiết bị phần cứng) và lọc những trình điều khiển (Những thao tác vào/ra “lọc” nào cho một thiết bị đặc biệt trong thứ tự để thêm hay sửa đổi hành vi).
- Những trình điều khiển tập tin hệ thống thực thi mẫu tệp tin hệ thống PC chuẩn (mà bao gồm những khái niệm của một cấu trúc thư mục phân cấp việc chứa đặt tên những tệp tin) trên những đĩa cứng địa phương hay qua những kết nối mạng. Đây cũng, là những trình điều khiển kernel-mode.
- Những bộ điều khiển thiết bị kế thừa là các trình điều khiển kernel-mode mà trực tiếp kiểm soát một thiết bị phần cứng không có trợ giúp từ những trình điều khiển khác. Phạm trù này thực chất bao gồm những trình điều khiển cho những phiên bản trước đó của Windows NT mà đang chạy không có sự thay đổi trong Windows XP.
Có một số thiết bị, bạn không cần viết bất kỳ trình điều khiển nào bởi vì Microsoft đã cung cấp một trình điều khiển chung mà sẽ làm việc với thiết bị của bạn. Đây là một vài ví dụ:
- Thiết bị tồn trữ tin lớn SCSI-compatible hoặc ATAPI-compatible
- Bất kỳ thiết bị nào nối tới một cổng USB mà hoàn toàn thích hợp với một thuyết minh đã phê chuẩn, cung cấp bạn hạnh phúc với bất kỳ hạn chế nào trong trình điều khiển Microsoft tiêu chuẩn
- Cổng tuần tự chuẩn hay cổng chuột PS/2
- Bàn phím chuẩn
- Card điều hợp video không có gia tốc hay những tính năng đặc biệt
- Cổng song song hay tuần tự chuẩn
- Ổ đĩa mềm chuẩn
Cho đa số những thiết bị mà Microsoft không trực tiếp sự hỗ trợ, bạn cần viết một trình điều khiển WDM. Bạn sẽ viết một trình điều khiển chức năng nguyên khối, một trình điều khiển lọc, hay đơn giản là một trình điều khiển nhỏ.
Nếu Microsoft đã viết một trình điều khiển cho thiết bị, bạn cố gắng cho thiết bị để hỗ trợ, bạn cần phải viết một Minidriver để làm việc với trình điều khiển lớp đó. Minidriver của bạn trên danh nghĩa trong việc phụ trách của, trừ phi bạn sẽ gọi những chương trình con trong trình điều khiển lớp mà về cơ bản lấy lại quản lý của phần cứng và gọi quay trở lại bạn để làm những thứ device-dependent khác nhau. Số lượng của công việc bạn cần để làm một minidriver thay đổi ghê gớm từ một lớp của thiết bị đến thiết bị khác.
Ở đây là một số ví dụ của những lớp thiết bị mà bạn cần phải lập kế hoạch để viết một minidriver:
- Các HID Non-USB, bao gồm chuột, các bàn phím, các cần điều khiển, những bánh lái, vân vân. Nếu bạn có một thiết bị USB (cho) hành vi chung nào của HIDUSB.SYS (những trình điều khiển Microsoft cho những thiết bị USB HID còn thiếu, bạn cũng nên viết một minidriver HIDCLASS minidriver. Phần chủ yếu điển hình của những thiết bị này là họ báo cáo người sử dụng được nhập vào bằng phương pháp những báo cáo mà có thể được mô tả bởi một cấu trúc dữ liệu bộ mô tả. Cho những thiết bị như vậy, phục vụ HIDCLASS.SYS như trình điều khiển lớp và thực hiện nhiều chức năng điều đó Direct-Input và những lớp bậc cao khác của phần mềm tiếp tục phụ thuộc, vì thế là bạn’re tương đối bị kẹt nhiều với việc sử dụng IDCLASS.SYS. Đây đủ khó khăn để tôi dành cho không gian đáng kể tận tâm tới nó sau đó trong sách này. Như một sự nói riêng, HIDUSB.SYS chính nó là một HIDCLASS minidriver.
- Những thiết bị Windows Image Acquisition (WIA), bao gồm những scanner và những camera. Bạn sẽ viết một WIA minidriver mà thực chất thực hiện một vài mạch ghép nối COM-style tới những diện mạo hỗ trợ vendor-specific của phần cứng của bạn.
- Những thiết bị Luồng, như âm thanh, DVD, và những thiết bị video, và những bộ lọc software-only cho những dòng dữ liệu đa phương tiện. Bạn sẽ viết một dòng minidriver.
- Những thiết bị giao diện Mạng trên những bus không truyền thống, như USB hay 1394. Cho một thiết bị như vậy, bạn sẽ viết một một trình điều khiển miniport Network Driver Interface Specification (NDIS) “với một khía cạnh thấp hơn WDM,” tới sử dụng những cụm từ giống như tài liệu DDK trên chủ đề này. Một trình điều khiển như vậy không chắtrinhflinh động giữa những hệ điều hành, vì thế là bạn cần phải lập kế hoạch trên sự ghi riêng biệt của họ với những sự khác nhau nhỏ hơn đối phó với những phần phụ thuộc nền tảng.
- Những card Video. Những thiết bị này yêu cầu một video minidriver mà làm việc với bộ điều khiển lớp cổng video.
- Những máy in, mà đòi hỏi thay cho các DLL user-mode của các trình điều khiển kernel-mode.
- Những nguồn pin, Microsoft cung cấp một trình điều khiển lớp chung. Bạn viết một minidriver (DDK nào gọi là một trình điều khiển miniclass, nhưng cùng thứ của nó) để làm việc với BATTC.SYS.
Một thiết bị vận hành sao cho gần tới một tiêu chuẩn được thừa nhận một trình điều khiển Microsoft chung đó gần như thích hợp. Trong một số hoàn cảnh, bạn có thể có khả năng để viết một trình điều khiển lọc mà sửa đổi hành vi của trình điều khiển chung đủ phải làm công việc phần cứng của bạn. Điều này xảy ra rất thường xuyên, nhân tiện, vì thường của nó không phải dễ dàng để thay đổi cách mà một trình điều khiển chung truy nhập phần cứng.
Với một số ngoại lệ sẽ được ghi chép trong mục tiếp theo, đa số những kiểu khác (của) thiết bị yêu cầu cái gì Tôi có gọi cho ở đây một trình điều khiển chức năng WDM nguyên khối. Một trình điều khiển như vậy thực chất đứng một mình và xử lý tất cả các chi tiết của kiểm soát phần cứng của bạn.
Khi kiểu này của trình điều khiển thích hợp, Tôi khuyến cáo cách tiếp cận sau đây vì thế mà bạn có thể kết luận với một bit nhị phận đó là sẽ làm việc việc trên các nền tảng Intel x86 trong tất cả các hệ điều hành. Đầu tiên, xây dựng với nhiều DDK gần đây nhất — Tôi sử dụng một phiên bản beta của DDK .NET cho những ví dụ tiêu biểu trong nội dung sách hướng dẫn. Bạn có thể sử dụng IoIsWdmVersionAvailableto quyết định hệ điều hành nào mà bạn tình cờ đang sử dụng. Nếu bạn tình cờ được chạy trong Windows 2000 hay Windows XP, bạn có thể gọi là MmGetSystemRoutineAddress để có một con trỏ tới một chức năng Windows XP-only. Tôi cũng gợi ý ở một hải cảng WDMSTUB.SYS, mà được bàn luận trong Phụ lục A, để định nghĩa MmGetSystemRoutineAddress và những hàm nhân then chốt khác trong Windows 98/Me; cách khác, trình điều khiển của các bạn đơn giản không tải được trong Windows 98/Me bởi vì những nhập khẩu không xác định.
Đây là một số ví dụ của những thiết bị mà cho bạn có lẽ đã viết một chức năng trình điều khiển WDM nguyên khối:
- Bất cứ loại SmartCard loại ra ngoại trừ một loại được gán cho một cổng tuần tự
- Bộ biến đổi Digital-to-analog
- Card ISA hỗ trợ quyền xác minh sở hữu thẻ đọc/ghi bộ chuyển đổi
Những kiểu của các trình điều khiển khác
Vài vị trí tồn tại trong đó một trình điều khiển chức năng WDM nguyên khối không chiến thắng đủ bởi vì những sự khác nhau kiến trúc giữa Windows 98/ Me và Windows 2000/ XP. Trong những trường hợp sau đây, bạn cần viết hai trình điều khiển: một trình điều khiển WDM cho Windows 2000/XPvà một trình điều khiển VxD cho Windows 98/Me:
- Một trình điều khiển cho một cổng nối tiếp. Trình điều khiển trên Windows 98/Me là một VxD mà đưa ra giao diện trình điều khiển cổng VCOMM tại cạnh trên của nó, trong khi mà trình điều khiển Windows 2000/ XP là một trình điều khiển WDM đó là những đề xuất rất hay và nghiêm khắc chỉ rõ giao diện IOCTL tại mép trên của nó. Hai thuyết minh upper-edge không có cái gì chung.
- Một trình điều khiển cho một thiết bị nối tới một cổng nối tiếp. Trình điều khiển Windows 98/Me là một VxD mà gọi là VCOMM để nói chuyện với cổng. Trình điều khiển Windows 2000/XP là một trình điều khiển WDM mà nói chuyện với SERIAL.SYS hay một vài trình điều khiển cổng nối tiếp khác mà thực hiện cùng giao diện IOCTL.
- Một trình điều khiển cho một thiết bị trữ tin lớn USB không tiêu chuẩn. Dành cho Windows 98/Me, bạn sẽ viết một VxD mà điều chỉnh vào trong sự phân cấp giám sát viên Vào/ra của những trình điều khiển phân tầng. Dành cho Windows 2000/XP, bạn sẽ viết một trình điều khiển chức năng WDM nguyên khối đó là các khối yêu cầu SCSI chấp nhận ở cạnh trên của nó và giao tiếp với thiết bị USB tại mép thấp hơn của nó.
Dành cho hai lớp của thiết bị, Microsoft định nghĩa một kiến trúc trình điều khiển di động dài trước WDM:
- Những bộ điều hợp Computer System Interface (SCSI) nhỏ sử dụng một trình điều khiển " SCSI miniport ", không sử dụng bất kỳ cái nào của những chức năng hỗ trợ nhân tiêu chuẩn và tin cậy thay vào đó trên một API đặc biệt được xuất khẩu bởi SCSIPORT.SYS hay SCSIPORT.VXD, như trường hợp có thể. Miniport thì di động giữa những hệ thống.
- Những card giao diện Mạng sử dụng một “NDIS miniport driver,” mà tin cậy chỉ riêng trên một API đặc biệt được xuất khẩu bởi NDIS.SYS hay NDIS.VXD, như trường hợp có thể. Tại một thời gian, các trình điều khiển NDIS miniport là di động giữa các hệ thống, nhưng tính di chuyển được đã khá nhiều bị mất cho đến bây giờ. Những trình điều khiển giao thức mạng và những cái gọi là trình điều khiển " trung gian " mà cung cấp chức năng lọc cũng đi theo quỹ đạo xung quanh NDIS.