title: Modifying Windows disk driver to use updated control codes like IOCTL_DISK_GET_DRIVE_GEOMETRY_EX
body: <p>I'm trying to modify a Windows kernel-level disk driver to properly respond to updated control codes.  For example, it only had a handler for the obsoleted <code>IOCTL_DISK_GET_DRIVE_GEOMETRY</code> control code, but not the newer <code>IOCTL_DISK_GET_DRIVE_GEOMETRY_EX</code> control code, so I added that.<br>
  Of course, I updated the driver to use all the new Windows structures and functions too, like the <code>IoReadPartitionTableEx()</code> function and the <code>DRIVE_LAYOUT_INFORMATION_EX</code> structure (I am trying to add GPT support to the driver).  The issue is, when I use the disk driver, I can see (using DebugView) that Windows (I think it's Windows... perhaps it's something else...) is still sending the old <code>IOCTL_DISK_GET_DRIVE_GEOMETRY</code>control code to my driver.  I would like Windows to send the newer control codes to my driver.  Is it even Windows that is sending these control codes?  Is there perhaps some other layer between Windows and the driver that I'm just not yet aware of?</p>
  
  <p>Is the driver supposed to somehow identify its "type" to Windows, so that Windows knows exactly how to "speak" to it?  How does Windows know exactly which control codes to send to a particular driver?  I've Googled around for answers to these (seemingly very basic) questions, and haven't found a clear answer, which leads me to believe that I've fundamentally misunderstood something about Windows drivers here.  Does my question even make sense?</p>