2013-05-15 54 views
5

Khi tạo dự án Windows Driver trong Visual Studio 2012, bạn có nhiều tùy chọn khác nhau để chọn.Sự khác nhau giữa trình điều khiển WDM, trình điều khiển KMDF và trình điều khiển UMDF là gì?

Có một số page on MSDN giúp bạn chọn đúng mẫu trình điều khiển cho thiết bị của mình. Tuy nhiên nó không giải thích rõ sự khác biệt chính xác giữa các loại trình điều khiển WDM, KMDF và UMDF, và khi nào nên chọn kiểu máy nào.

Tôi đang tìm giải thích về sự khác biệt giữa các mô hình trình điều khiển WDM, KMDF và UMDF, vì vậy thật dễ dàng để bắt đầu các nhà phát triển trình điều khiển Windows chọn đúng mô hình.

Trả lời

10

Tóm lại:

  • WDM là viết tắt của Windows Driver Model. Mỗi trình điều khiển hạt nhân về cơ bản là một trình điều khiển WDM.
  • KMDF là viết tắt của Khung điều khiển chế độ hạt nhân. Đây là một khung công tác đóng gói và ẩn chứa nhiều khía cạnh lập trình hệ điều hành mà nhà phát triển trình điều khiển phải liên quan đến ngay cả khi nó không liên quan gì tới logic nghiệp vụ của người lái xe của mình. Một số chức năng không tồn tại trong khuôn khổ KMDF và sẽ yêu cầu các cuộc gọi Kernel nguyên gốc mà không cần sử dụng khung công tác (nhưng trong hầu hết các trường hợp, nó không phải là trường hợp).
  • UMDF là viết tắt của Khung điều khiển chế độ người dùng. Đó là một khuôn khổ bổ sung cho KMDF và cùng nhau chúng bao gồm WDF (Windows Driver Frameworks). UMDF cho phép tạo trình điều khiển ở chế độ người dùng, có tất cả các lợi ích của chế độ lập trình Người dùng so với chế độ Kernel. Đương nhiên, trình điều khiển UMDF có những hạn chế so với các trình điều khiển KMDF/WDM và trong hầu hết các trường hợp, nó sẽ yêu cầu đối tác Kernel với ít nhất một số chức năng.

Trang bạn đã tham chiếu khá toàn diện. Bạn nên đi sâu vào nó để hiểu sâu hơn.

+1

Cảm ơn bạn đã giải thích, nhưng một điều chưa hoàn toàn rõ ràng với tôi. Bạn nói rằng mỗi trình điều khiển hạt nhân là một trình điều khiển WDM, nhưng tất cả các trình điều khiển hạt nhân trình điều khiển WDM? Tại sao WDM và KMDF lại có hai mẫu khác nhau trong VS2012? – lesderid

+3

@lesderid nghĩ về nó trong điều khoản của Win32 và MFC (Tôi hy vọng bạn đã quen thuộc với cả hai). Trong khi mọi chương trình MFC là một chương trình Win32, không phải mọi chương trình Win32 đều là một chương trình MFC. KMDF giống như MFC: một khuôn khổ có thể được sử dụng để che giấu một số phức tạp của WDM.Vì vậy, các mẫu khác nhau bởi vì những gì chúng tạo ra là khác nhau: một mẫu tạo ra một loại dự án và một mẫu khác tạo ra một loại khác. Để trả lời câu hỏi khác của bạn, tất cả các trình điều khiển * kernel * hiện đại là trình điều khiển WDM; mặc dù có các mô hình trình điều khiển hạt nhân "cũ" khác, chúng không được hỗ trợ chính thức và không còn được sử dụng nữa. –

5

Tôi thích articel từ MSDN: Differences Between WDM and KMDF

  • WDM là mô hình điều khiển từ trình điều khiển thiết bị PnP (> = Win2k). Trong mô hình này, bạn phải xử lý các chức năng không liên quan đến chức năng của bạn. Walter Oney (Lập trình Mô hình Trình điều khiển Windows của Microsoft) đã thuê các chức năng này cho các thư viện trình điều khiển thiết bị bên ngoài để sử dụng lại.

  • WDF/kmdf cố gắng đơn giản hóa việc phát triển trình điều khiển thiết bị. Chức năng có thể được ghi đè hoặc xử lý mặc định được sử dụng. Việc quản lý bộ nhớ và hàng đợi đã được đơn giản hóa và bảo mật.

  • UMDF cố gắng sử dụng các cuộc gọi chức năng tương tự ở chế độ người dùng làm cuộc gọi hàm ở chế độ hạt nhân.

Hy vọng rằng không quá muộn. Ngày bắt đầu câu hỏi khi tôi viết xong!

+1

KMDF + UMDF = WDF – SomeWittyUsername

Các vấn đề liên quan