Which OSR Seminar is Right For Me?
Perhaps you, or your team, need to learn about Windows system software -- internals, drivers, debugging, or file systems -- but you're not sure which OSR offering will best meet your needs.
Relax. We know that Windows system software is a confusing area. That's why we're here to help! If you want personal help, or you have any questions on the items listed here, do not hesitate to contact an OSR Seminar Consultant.
If you have a team to train, one way to be certain that your OSR seminar will precisely match your team's background and needs is to schedule a private, on-site, presentation. For less than you'd think, typically much less than what it would cost to send 10 people to a public seminar offering, OSR can customize a seminar for you and have one of our engineers travel to your site to present it. Basic customization is included in the cost of any OSR on-site seminar. With extensive customization (available at extra cost), the possibilities are limitless. Just check out our on-site seminar section, or contact an OSR Seminar Consultant for more information about OSR on-site seminars.
I Need to Learn How to Write Windows Drivers
If you already know which driver technology you need to learn, you're more than halfway to knowing which OSR seminar is for you. Just check out the prerequisites to be sure you have the necessary background, and you're on your way.
If you haven't learned this yet, you should know that the world of Windows drivers is a diverse and confusing one. There is no single model (design, set of entry points, and supporting functions) that will allow you to write a driver for every type of device on Windows. There are two general driver models (WDM and WDF), and several specific "mini-driver" models that are tailed to supporting particular types of hardware (such as network cards, storage adapters, or graphics devices).
WDM, the Windows Driver Model, is the basic (native) model for the Windows I/O subsystem. This is the model that all the other Windows driver models (including file systems) use to get their work done. If you want to gain the best possible understanding of how the Windows I/O subsystem works, and the underlying basics of device Plug and Play (PnP) and Power Management architecture, you'll want to learn WDM. OSR's Writing WDM Drivers for Windows seminar is almost certainly for you. Also, if you have an existing driver that you need to maintain or modify, that driver is most likely written in WDM (because the other model, WDF, was only recently introduced to Windows), so you'll want to take our Writing WDM Drivers for Windows seminar.
WDF, the Windows Driver Foundation, is the newest of the Windows driver models. WDF was designed to make it relatively quick and easy to write high quality device drivers and filter drivers for Windows. WDF has PnP and Power Management knowledge "built in", so when using this model you spend more time dealing with your device (or the requests you're filtering) and less time dealing with the mechanics of making Windows happy. Another feature of WDF is that it supports both a kernel-mode and -- for certain specific uses -- a user-mode (C++ based) model.
If you're creating a new driver for a device class that WDF supports, we strongly recommend our Writing WDF Drivers for Windows seminar. You'll learn the latest, greatest, model for developing Windows drivers, avoid a lot of ancient, legacy-based and annoying hassles inherent in using the older Windows Driver Model, and you'll discover that Windows driver writing can be a pleasure. While our Writing WDF Drivers for Windows seminar covers lots of Windows architectural details, you can always fill-in your knowledge about the underlying WDM model by taking our Writing WDM Driver for Windows seminar in the future, after you've completed our WDF seminar.
What if you're writing a driver for a network adapter (NIC), network protocol, Storage HBA, video graphics device? OSR doesn't offer specific seminars on these topics. But, fear not! Remember that the NDIS, StorPort, and WDDM models (which support the technologies previously mentioned, respectively) are based on WDM. Therefore, you will learn a great deal of information by attending our Writing WDM Drivers for Windows seminar. While this seminar won't address the specifics of how to write a driver for your type of device, you will learn all the background concepts needed to make the job of developing and debugging your driver easier.
Finally, perhaps you're only interested in writing a driver as a way to get code into kernel-mode on Windows. Perhaps you work in the security, cyberwarfare, or intelligence fields. If so, our Windows Internals and Software Driver Development seminar was designed specially for you. You'll learn the architectural and practical information you need, without having to wade through reams of details that don't apply to the types of drivers you intend to write.
I Need to Learn File Systems or Mini-Filters
Great! If you want to learn how to write Windows file systems, we have a seminar that will teach you what you need to know to get started. One of our most popular, and most intense, offerings is our four-day Developing File Systems for Windows seminar. Before you sign up, be sure to check the prerequisites, because the instructor will assume that you already know how to write Windows drivers using the WDM model.
If you want to learn how to write Windows file system mini-filters, we also have an exceptional hands-on seminar on this topic. Developing File System Mini-Filters for Windows was designed to leverage your knowledge of Windows file systems, and guide you through the process of mini-filter implementation. Again, be sure to check that you meet the prerequisites for this seminar, because the instructor will assume that you know how to write Windows file systems at the seminar's start.
What Will I Be Expected to Know?
The syllabus for each seminar lists the prerequisite knowledge that the instructor will expect each student to have at the start of the seminar. This is usually your best guide to what you should know. Typically, the prerequisites describe some general topics with which you should be familiar (see a description of what we mean by those topics below). When a seminar lists a specific OSR seminar as being a required prerequisite, we're not joking or trying to get you to take more seminars. Rather, the instructor will assume that you know specific topics and specific terminology presented in that seminar. If you're pretty confident that you're an expert, but you haven't taken the specific OSR seminar indicated, be sure to discuss this with an OSR Seminar Consultant before registering.
Here's a list of what we mean by some of the general prerequisites that are mentioned for various OSR seminars:
- Device Concepts -- Instructors of seminars that list "device concepts" as a prerequisite will expect that you have a basic idea of how devices interact with computers and operating systems. This means you should understand the basics about device registers, shared memory, and interrupts.
- General Operating Systems Concepts -- This typically means the instructor will expect you to understand: The role of an operating system in a computer, threads, processes, interrupts, system services, multi-tasking, reentrancy, and virtual memory (kernel mode versus user mode). If the seminar prerequisite states "a basic understanding of general operating system concepts" it means that you should have a general, conceptual, grasp of the topics previously listed. If the seminar prerequisite indicates "a solid understanding" or "solid knowledge" it means you should know the specifics of how these items work in some real operating system. If you understand these concepts on Linux or Solaris, that's OK. If you understand how they work on Windows, well, so much the better!
- Understanding of Windows Kernel Mode Drivers -- When you see this as a prerequisite, it generally means that you should have a grasp of how to write some type of Windows WDM driver. You'll be expected to understand that organization of the Windows I/O Subsystem, the structure and entry points in a WDM driver, Device Objects (PDOs and FDOs), IRPs, and how IRPs are sent from driver to driver in Windows. Unless specifically stated, a working knowledge of PnP or power management is not required. Note that knowing how to write WDF (KMDF or UMDF) drivers does not meet this prerequisite.
- Working Knowledge of the C Programming Language -- This typically means that you can use an editor and write code using Microsoft C, including control statements, assignment statements, and function calls.
Another tip to help you determine if a particular seminar is for you: Each seminar syllabus lists the typical student for which it is designed for. This information appears in the Target Audience section. So, if you're an experienced Windows software engineer and the Target Audience says the seminar is for "Managers, testers, and support staff" that's probably a good hint that that particular seminar wasn't designed with you in mind, and might be too elementary. Likewise, if you're a Program or Project Manager, a seminar that lists the target audience as "engineers who need to understand how to design and develop... Windows drivers" the seminar was probably not designed for you. However, if you do have an engineering background, you want to be exposed to a detailed-level of knowledge, and you're comfortable in a room full of developers, by all means, come join the fun!
We recognize that people come to our seminars with different backgrounds, and with different learning goals. The Prerequisites and Target Audience sections of each seminar syllabus are meant to be guides. Our instructors have years of experience teaching folks of all levels. If you see a seminar with content that seems like it's what you want to learn, but the Prerequisites or Target Audience don't seem to match your background exactly, don't hesitate to contact an OSR Seminar Consultant to discuss your interests and needs.
More on Seminars
Public Seminar Schedule
Windows Internals and Software Driver Development
5-9 August 2013, Santa Clara, CA
Kernel Debugging and Crash Analysis for Windows
9-13 September 2013, Santa Clara, CA
Writing WDF Drivers for Windows
7-11 October 2013, Boston/Waltham, MA
Developing File Systems for Windows
5-8 November 2013, Seattle, WA