Book Recomendations

Hello!
Sorry if this question is not supposed to be asked here. If so, I am very sorry about that and I will be happy to delete the question in order to not polute the forum.
I want to kindly ask you about a book I have come across and that I have now obtained: Windows NT Device Driver Development, by @Peter_Viscarola_OSR and Mason.
My question is: given my goal is to have a in depth grasp of Windows OS and that in the near future I want to be able to study the kernel subsystems at will, is this book still a great reference into Windows kernel?
I know it is a terrific reference, and everywhere I look there are praises to this masterpiece, I am just asking considering that it was published in the 90s.
I also know it uses WDM instead of WDF, and I have already read the Getting Started page on OSR learning library page. But, as I said, my intentions are to study Windows under the hood, even down the road where WDF are.

Once again, sorry if this is not the place for the question and thanks in advance!

Your question is entirely appropriate for NTDEV. So, no worries!

That book is super ancient and describes Windows NT as it was initially designed... before the era of PnP and Power Management.

Given so much has changed in Windows, I think it'd be hard to read that book and separate out what's still valid from what's changed. Consider that the since Windows 2000, the I/O Manager's world has changed to be oriented around Bus Drivers and Function Drivers... PDOs and FDOs. These concepts simply did not exist (or exist in remotely the same way) before PnP/Power.

In short, it's best to view Windows NT Device Driver Development as a snapshot that shows the humble beginning of today's Windows I/O Subsystem. But I really can't recommend it, even as background reading, if you're goal is to understand how Windows works today.

1 Like

Thank you very much for replying me!

What would you recommend as an equivalent resource or approach nowadays in my case?

I thought of learning WDF using OSR learning library and the samples provided by Microsoft and then the Microsoft docs itself for this in depth study. Do you think this is a thorough and optimal way to do this?

Thanks in advance!

Sadly, there really isn't any good book to read and learn from. There's Developing Drivers with the Windows Driver Foundation. But I've never been a fan of this book (which is really an edited collection of White Papers written by the MSFT tech writers), and it's outdated now in any case.

IF you have previous driver development experience, then you CAN pick up WDF "on your own"... focus on the specific device-type that you're interested in (to the exclusion of just about any other device type), DON'T read ANYTHING at all about WDM (purely focus on WDF), and read the stuff in the WDK and on the OSR website (neither of which are primarily written to be tutorial for new driver devs).

Again, assuming you know how devices and drivers generally work, the WDF model itself is really quite simple once you get the hang of WDF Objects, attributes, configuration, and Event Processing Callbacks.

What you risk with this approach is that you won't automatically get a good handle on Windows I/O Subsystem architecture, which is really important for being able to write an actual, reliable, driver on Windows. So, you will need to go out of your way to understand this: IRQLs, DPCs, locking, concurrency, asynchronous I/O and the like. Just to give you an idea: Our WDF Seminar is five days of lecture, and the first day and a half is spent on things that are primarily Windows OS and I/O Subsystem architectural concepts.

The "optimal" way (since you asked) to learn how to write WDF drivers is, quite frankly, to attend one of our seminars. Five days, and you're ready to start working on your driver. Of course, you don't leave such a seminar being an expert... but you know what you know and what you don't know, at least.

1 Like

I am only posting a reply to say a HUGE Thank You!
Really, it is absolutely invaluable to me to hear back some words of wisdom and advice from you. I will guide my way and my learning choices considering what you said. Thanks a lot!

Just adding this comment in order to not spread misleading information due to the mistaken statement I made.

I said Windows NT Device Driver Development is about WDM. But this is not true. It is, in fact, about NT device drivers.

Sorry about that.