SELA Developer Days 2011 – Windows Internals

June 30, 2011

The SELA Developer Days conference has been adjourned :-) My one-day session today, titled Windows Internals for Busy Developers, was something I came up with a couple of months ago and was sure it wouldn’t be popular – after all, we have a five-day Windows Internals course and most people interested enough in the subject would want to attend the full training with labs, demos, and detailed walkthroughs of all Windows components. I was surprised to find 16 attendees in my class, all eager to learn about Windows architecture and components, diagnostic tools, kernel debugging, and internal...
no comments

SELA Developer Days 2011 – Improving the Performance of .NET Applications

June 29, 2011

There’s just one day left for the SELA Developer Days, and today I delivered my session titled Improving the Performance of .NET Applications. In this brief one-day session I wanted to distill the best practices and tools for measuring various performance metrics, but also provide some insight into OS and CLR internals relevant to high-performance development. Other sessions today included Parallel Programming: One Step Beyond, Windows Phone Mango, Introduction to Scrum, and Visual Studio 2010 Testing Tools. I really wish I could attend Bnaya and Yaniv’s session on parallel programming – they showed lots of cool stuff, including...
no comments

SELA Developer Days 2011 – C++ Debugging

I’m keeping up with the updates from the SELA Developer Days conference. Yesterday our classes were full to the brim with attendees – some of the sessions delivered were Parallel Programming in .NET 4.0, Introduction to Windows Phone 7, and a feature-packed day on TFS 2010 and Visual Studio 2010. I delivered yesterday a session on C++ debugging, in which we covered the following topics: How to read x86 and x64 assembly listings created by the C/C++ compilers How to match debugging symbols to the debugged process or dump...
no comments

SELA Developer Days 2011 – .NET Debugging

June 27, 2011

As I wrote about a month ago, this week is a very busy one for us – we’re hosting the SELA Developer Days conference at SELA’s headquarters. The conference registration was truly overwhelming – there are close to 600 participants scheduled to attend the conference’s 25 workshops during the week! I’m a little biased, but after teaching the .NET Debugging one-day session to a group of 40 enthusiastic developers today, I think the conference organization was superb so far, and that we really managed to create the kind of easygoing, stress-less learning atmosphere which is not...
no comments

Baby Steps in Windows Device Driver Development: Part 4, Kernel Debugging

June 20, 2011

Now that you have a driver running on the target system, it’s time to learn how to debug it if the need arises. In the first part, you configured the virtual machine for kernel debugging over a virtual serial port, and connected to the kernel debugging session using WinDbg. Familiarity with WinDbg commands for unmanaged debugging is a major plus here, but there are numerous new extension commands that are available only in kernel-mode which you will have to learn anyway. Commands you might need: bp to set a breakpoint ...
no comments

Baby Steps in Windows Device Driver Development: Part 3, Receiving IOCTLs

June 10, 2011

Now that we can compile, deploy, install and start a driver, it’s time for something more interesting. In this post, we’ll send controls to our driver from a user-mode application. To receive information from the outside, we need to teach our driver to respond to device I/O control codes (IOCTLs) which can be delivered to it from user mode using the DeviceIoControl Win32 API. We have already seen how our driver can tell Windows what the unload routine is using the PDRIVER_OBJECT structure. Handling IOCTLs is very similar, we just need to provide another routine or two. ...

The Future of Microprocessors—Must Read for Developers

June 5, 2011

Long-time readers of this blog know that I really don’t like rehashing someone else’s thoughts and linking to material that isn’t my own. However, the ACM article The Future of Microprocessors (S. Borkar, A. Chien) warrants an exception to this rule. If you can afford the time (approx. 2 hours), I strongly recommend that you read the article instead of my somewhat incoherent ramblings below. If you’re looking for an executive summary highlighting some of the biggest challenges and likely solutions and are willing to sacrifice accuracy or presentation, read on :-) Moore’s Law and related observations...
no comments

Baby Steps in Windows Device Driver Development: Part 2, “Hello World” Driver

June 4, 2011

In this installment, we will compile and deploy our first driver. You should have all the tools installed already. Windows device drivers are reactive programs—all they really do is respond to events, somewhat similar to GUI programs. The kinds of events drivers recognize include: Loading the driver into memory and unloading it from memory Adding a new hardware device for which the driver is responsible Transitioning to a power-savings mode Reading and writing from a device Handling an...