Windows Driver Kit (WDK) Documentation Blog

New "Learning Roadmap" prototype topic for the Windows Driver Kit for your review

To help novice or new-to-technology driver developers, the Windows Driver Kit (WDK) writing team is investigating the use of a new type of topic known as a learning roadmap. The learning roadmap steps a novice or new-to-technology device driver developer through the sets of technologies that are associated with developing a specific type of driver. Each step in the learning roadmap describes the knowledge set, gives pointers to resources (Microsoft Web content or other published content, such as books), and lists learning objectives and areas of information that should be understood before moving on to the next step.

The learning roadmap topic attempts to answer the question: What do I need to know before I begin developing a specific type of Windows driver? The intent of the learning roadmap topic is to reduce developer ramp-up time by providing a focused, self-study-based learning plan that is customized for the technology or driver type.

Be aware that the learning roadmap is different than the previously published “roadmap” topic (click here for an example), now known as a driver development roadmap topic, which is designed to step a developer through the creation of a Windows driver and driver package for distribution.

We would love to get your feedback on the usefulness of this new type of topic. We have included a learning roadmap prototype for Windows Filtering Platform (WFP) callout drivers below. Please review for accuracy, completeness, and general usefulness to new driver developers and experienced driver developers who are new to WFP. Please add your comments and let us know what you think. Thanks!

************************************************************************************

    Learning Roadmap for Windows Filtering Platform (WFP) Callout Drivers

To learn about the technologies that are associated with WFP callout drivers, follow these steps:

·         Step 1: Learn about Windows architecture.

See the Microsoft Windows Internals, Fourth Edition: Microsoft Windows Server 2003, Windows XP, and Windows 2000 Microsoft Press book.

You should understand Windows architecture (Chapters 1 and 2), system and management mechanisms (Chapters 3 and 4), processes, threads, jobs (Chapter 6), memory management (Chapter 7), security (Chapter 8), the input/output (I/O) system (Chapter 9), networking (Chapter 13), and crash dump analysis (Chapter 14).

·         Step 2: Learn about Windows kernel-mode programming.

To determine the driver model to use for your WFP callout driver (either the Windows Driver Model [WDM] or Kernel-Mode Driver Framework [KMDF]), see Choosing a Driver Model.

To learn about WDM-based drivers, see Introduction to Windows Drivers, Writing WDM Drivers, and Driver Programming Techniques. Also see Chapters 2, 3, 4, and 5 of the Programming the Microsoft Windows Driver Model, Second Edition Microsoft Press book.  

To learn about KMDF-based drivers, see Getting Started with Kernel-Mode Driver Framework, Kernel-Mode Driver Framework Objects, Handling I/O Requests in Framework-based Drivers, Synchronization Techniques for Framework-Based Drivers, and Programming Techniques for Framework-Based Drivers. Also see the Developing Drivers with the Windows Driver Foundation Microsoft Press book.

You should understand the different types of Windows kernel-mode driver models and how to manage Windows kernel-mode or KMDF objects, memory, and I/O. You should also understand synchronization and other Windows kernel-mode or KMDF programming techniques.

Be aware that you do not need to learn about Plug and Play (PnP) and power management for WFP callout drivers.

·         Step 3: Learn about TCP/IP architecture.

See Chapter 2 – Architectural Overview of the TCP/IP Protocol Suite of TCP/IP Fundamentals for Microsoft Windows.

You should understand the basics of the layered TCP/IP stack architecture and the key protocols in the TCP/IP suite including Internet Protocol version 4 (IPv4), Internet Protocol version 6 (IPv6), Internet Control Message Protocol (ICMP), ICMP for IPv6 (ICMPv6), Transmission Control Protocol (TCP), and User Datagram Protocol (UDP).

·         Step 4: Learn about IPv4 and IPv6 addresses.

See Chapter 3 – IP Addressing of TCP/IP Fundamentals for Microsoft Windows.

You should understand the syntax and size of IPv4 and IPv6 addresses, the different types of addresses, and how to express ranges of addresses.

·         Step 5: Learn about packet structure for TCP/IP core protocols.

See Chapters 5, 9, and 10 of the Windows Server 2008 TCP/IP Protocols and Services Microsoft Press book and Chapter 4 of the Understanding IPv6, Second Edition Microsoft Press book.

You should understand the fields that comprise the IPv4, IPv6, TCP, and UDP headers and IPv4 fragmentation.

·         Step 6: Learn about IPv4 and IPv6 forwarding and routing.

See Chapter 5 – IP Routing and Chapter 10 - TCP/IP End-to-End Delivery of TCP/IP Fundamentals for Microsoft Windows.

You should understand how IPv4 and IPv6 use routing tables to send or forward packets, how Network Address Translation (NAT) works, and the details of the IPv4 and IPv6 end-to-end delivery processes.

·         Step 7: Learn about IPsec.

For an overview of Internet Protocol security (IPsec), see Chapter 13 - Internet Protocol Security and Packet Filtering of TCP/IP Fundamentals for Microsoft Windows and IPsec Architecture. For information about IPsec protocol and packet structure, see Chapter 18 of the Windows Server 2008 TCP/IP Protocols and Services Microsoft Press book.

You should understand the role of IPsec, the different types of IPsec headers and trailers, IPsec security negotiation, and packet processing for IPsec-protected packets.

·         Step 8: Learn about Network Driver Interface Specification (NDIS) network buffer lists.

See NET_BUFFER Architecture.

You should understand how to manipulate network data structures with NDIS network buffer lists, including retreat and advance operations.

·         Step 9: Learn about the basics of WFP.

See Windows Filtering Platform.

You should understand what WFP is, why you should create your new packet filtering components using WFP, why you should convert your existing packet filtering components to use WFP, the architectural components of WFP, and how to convert existing packet filtering components to a WFP callout driver.

·         Step 10: Learn how to create a WFP callout driver.

See Roadmap for Developing WFP Callout Drivers.

You should understand the overall process of how to create a WFP callout driver. You should be able to make design decisions for your driver, as well as develop, debug, and test your driver. You should also be able to create, sign, and distribute a driver package.

 

*****************************************************************************

Thanks for helping us improve the documentation for driver developers in the WDK.

Joe Davies [MSFT], WDK Writing Lead

http://blogs.msdn.com/wdkdocs

This posting is provided "AS IS" with no warranties, and confers no rights.

Published Friday, July 11, 2008 5:36 PM by wdkblog
Filed under:

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

Subscribe to this post's comments using RSS

Leave a Comment

(required) 
(optional)
(required) 
Submit

© 2008 Microsoft Corporation. All rights reserved. Terms of Use  |  Trademarks  |  Privacy Statement
Microsoft
Page view tracker