For a quick hello-world-ish into to NT drivers, check
out Jim Finnegan’s Nerditorium article from the March 1998 MSJ:
http://www.microsoft.com/msj/defaultframe.asp?page=/msj/0398/driver.htm
Here are some other resources that you may find helpful:
WINDOWS NT/2K/XP KERNEL MODE DEVICE DRIVER DEVELOPMENT RESOURCES
THE MICROSOFT DRIVER DEVELOPMENT KIT (DDK):
The DDK and its associated documentation and samples is an essential
resource for learning about device driver development. Once you’re
familiar with the basics (read one of the books below) you should
definately go through the sample drivers that come with the DDK.
The “toaster” sample code contains generic code for several types of
drivers. You can download the DDK at: http://www.microsoft.com/ddk
BOOKS:
“Windows NT Device Driver Development” by Peter Viscarola and Tony Mason.
This is the first NT driver book I read, and still the first one that I
recommend. It’s got all of the essentials and is clearly written. 95%
of the stuff in this book still applies to W2K/XP drivers too.
“Programming the Windows Driver Model” by Walter Oney. Read this book
as soon as you can. It’s filled with guidelines that will help you to
avoid the common mistakes. I couldn’t believe how many things I’d learned
the hard way that I could have avoided if I’d read this book first.
“Inside Windows 2000, 3rd Ed.” by David Solomon and Mark Russinovich.
This isn’t a driver dev book, but you’ll soon see driver don’t run in their
own sandbox. They’re an integral part of the OS, and in order for them
to work properly you need to have a good understand of how the OS works.
This book is an absolute goldmine of OS internals. Highly recommended.
“The Windows 2000 Device Driver Book, 2nd Ed.” Be sure to get the second
edition which was recently published. The first edition has many errors.
I like this book. It’s only around 400 pages, so it’s not overkill, and
it has a lot of really useful insights. It’s helpled me to solve some
pretty tricky problems that I didn’t find solutions to anywhere else. I’d
still recommend that you read Viscarola and Mason’s book first.
“Windows NT/2000 Native API Reference” by Gary Nebbett. NT provides tons of
useful functionality through the native NT API. Most of this API is
undocumented and may change at any time. However, sometimes using these
undocumented functions is the only way you can accomplish certain tasks.
This book documents this API for the first time.
“Developing Windows NT Device Drivers” by Ed Dekker and Joseph Newcomer.
I’ve only been using this one as reference, so I can’t say how good the
content is. I love the useful tables in the back of this book, and what
I have read is well written and clear.
“Windows NT File System Internals” by Rajeev Nagar. This is the only
file system driver book available for the NT platform, and it doesn’t
cover any of the new stuff found in W2K for XP. However, it’s got a lot
of useful info that you can’t find anywhere else.
“Windows 2000 Kernel Debugging” by Steven McDowell. For me, this book
was mostly a waste of time. But if you’ve have zilch exposure to kernel
debugging then this book may help you to get up to speed a bit faster.
It’s a very fast read as it only has a little over 200 pages of useful
text. When you really want to get to know the kernel debugger, read
the debugger documentation that comes with WinDbg. You can download
WinDbg at http://www.microsoft.com/ddk/debugging/ The WinDbg documentation
is fantastic. When you start writing drivers you’ll be crashing your
machine all the time, so getting to know the debugger is very important.
“Writing Windows WDM Device Drivers” by Chris Cant. I’ve only read parts
of this book, and what I read was useful. I’ve heard several people
complain
that it has a lot of errors.
“Undocumented Windows 2000 Secrets” by Sven Schreiber. Not really an
essential
book, but it may help you if you have to do some tricky stuff like patching
the system service descriptor table (this would allow you to filter native
API calls), or if you need to understand the until-now undocumented format
of
Microsoft’s .PDB symbol files.
Microsoft has also published the DDK documentation as a three-volume set.
WEB SITES:
www.microsoft.com/ddk - The home of the DDK
www.microsoft.com/ddk/debugging/ - Get your kernel debugger here
www.microsoft.com/hwdev - More driver dev resources from Microsoft
www.osr.com - Home of “The NT Insider,” the online DDK docs, &
more
www.sysinternals.com - Tons of useful apps and docs for systems
programmers
www.oneysoft.com - Home of “Programming the Windows Driver Model”
book
www.pcausa.com - Useful if you’re writing any kind of network
driver
PERIODICALS:
“The NT Insider” - Sign up for the free distribution of this bimonthly
publication at www.osr.com It’s packed with useful tips.
Matt Pietrek’s “Under the Hood” column articles found in the Microsoft
Systems
Journal (available in the MSDN Library) - Tons of useful systems programming
tips over several years. Microsoft stopped printing the MSJ and most of the
articles from MSJ (including Matt’s) can now be found in MSDN Magazine.
Jim Finnegan’s “Nerditorium” column articles found in the Microsoft Systems
Journal (available in the MSDN Library) - Even more driver oriented than
Pietrek’s stuff. Read his March 1998 article for a quick intro to NT
drivers.
http://www.microsoft.com/msj/defaultframe.asp?page=/msj/0398/driver.htm
Mark Russinovich’s column articles found in Windows 2000 Magazine. Mark’s
articles are clear and detailed, and provide very useful information on
how various parts of the OS are implemented and work. If you don’t have
a subscription to Windows 2000 Magazine you can still get access to all but
his latest articles at www.windows2000mag.com He’s also provided a ton
of systems programming resources at his website: www.sysinternals.com
MAILING LISTS:
OSR hosts two fantastic mailing lists that are very active and an excellent
resource to driver developers. They are NTDEV and NTFSD. Post general
driver
dev questions to NTDEV and post file-system driver specific questions to
NTFSD. You can sign up for these email lists at www.osr.com
NEWSGROUPS:
nntp://comp.os.ms-windows.programmer.nt.kernel-mode (VERY GOOD)
nntp://public.win32.programmer.kernel (VERY GOOD)
nntp://microsoft.public.windbg (FOR HELP WITH THE KERNEL DEBUGGER)
nntp://microsoft.public.ddk.* (THERE ARE SEVERAL OF THESE)
SEMINARS:
http://www.osr.com/seminars_main.shtml
http://www.azius.com
http://www.oneysoft.com/wdmclass.htm
OTHER RESOURCES:
The Microsoft Installable File System Development kit (IFS kit). This is a
$1000 CD that comes with the complete source for FastFAT and CDFS. If
you’re
writing file system or file system filter drivers then you’ll want to buy
the
IFS kit. I don’t know about the XP IFS kit, but the W2K IFS kit comes with
the
NT IFS kit. You can find more info at: http://www.microsoft.com/ddk/IFSkit/
-----Original Message-----
From: Anthony Levensalor [mailto:Anthony.Levensalor@ie-ate.com]
Sent: Friday, August 17, 2001 10:09 AM
To: NT Developers Interest List
Subject: [ntdev] Beginner looking for help
Greetings!
Please excuse the simplicity and generality of my post, since I am
brand
new to driver development in general. My question is fairly simple: Where do
I begin? What do I do to begin developing device drivers for NT/200/XP, and
the 9x’s? I have long been interested in this aspect of programming, but
have never had the opportunity to do any work in the field. Can you folks
offer advice, suggestions, or possible starter tutorials to help me get
going?
Oh, and is there something equivalent to ‘Hello World’ for driver
development?
Thanks a ton,
Anthony Levensalor
Software Engineer
Instrumentation Engineering, INC
Anthony. Levensalor@ie-ATE.com
You are currently subscribed to ntdev as: xxxxx@legato.com
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com