

Ask HN: Resources/Books for kernel/driver programming on Windows and OSX - pmjordan

I've invested quite a bit of time into learning about Linux kernel programming over the last few months, and the O'Reilly books <i>Understanding the Linux Kernel</i> and <i>Linux Device Drivers</i> helped immensely. They were useful for getting higher-level feel for the system, as well as going into enough detail so I now usually know where to look or start. They're also great as references during development.<p>I'm now starting to think about other OSes, mainly Mac OS X and Windows. I know userspace pretty well there, but have zero experience with the respective kernels. Not having the source feels like it will make matters more difficult, so good literature seems critical.<p>For Mac OS X, I'm aware of the official Apple docs, which seem more useful as a reference than something to start on. The only relevant book I've found is <i>Mac OS X Internals</i> by Amit Singh. Has anyone here read it, and would you recommend it? Are there other good books or websites on the toping that I've missed?<p>There are quite a few Windows driver programming books, some horrendously out of date. None leap out at me as being obvious choices. There's the DDK documentation of course, but I wouldn't mind a second point of view. Any recommendations?
======
codeslinger
For Windows, there definitive source in book form is the Microsoft Windows
Internals series. I worked with a guy that used to work at Microsoft and he
prefered this book to looking things up in the source code ;-)

[http://www.amazon.com/Windows®-Internals-Including-
Windows-P...](http://www.amazon.com/Windows®-Internals-Including-Windows-PRO-
Developer/dp/0735625301/ref=sr_1_1?ie=UTF8&s=books&qid=1253974832&sr=8-1)

If you're in school, Microsoft also has an academic program that allows
universities (almost) full access to the source code of various Windows
kernels. Its called the Windows Research Kernel program and might help you
along if you can get ahold of it because it comes with a ton of documentation:
the original NT design papers, proposed class materials and a full copy of the
aforementioned Microsoft Windows Internals book in PDF form.

For Mac, the online kernel guides are pretty good. The Mac OS X Internals book
isn't so great for driver or kernel development directly, but is a good
reference for learning about how things work. Having said that, the book is a
bit dated at this point and could use an update for the later kernels.

~~~
pmjordan
_Windows Internals_ looks good, thanks. I'll probably go with that. I'm no
longer a student, so I'll have to make do without the source I guess. Given
that there's more of an explicit public kernel API than in Linux, I'm hoping
I'll have less need to poke through it.

Your points on the OSX book are duly noted. I'll thoroughly 'look inside' on
Amazon before deciding. It might still be useful to me as I'm relatively new
to OSX, at least compared to my Linux/Windows exposure.

