The Curious Engineer

All blogs / Windows internals

A Hole In My Head

learn.microsoft.com/en-us/archive/blogs/doronh

Doron Holan's musings on drivers and other nibbles and bits

Windows internalsOS / kernelMicrosoft blogsMSDN archive

’10’15’20’25
Posts
184 from 13 Feb 2006 to 15 Dec 2010
Posting
archived, read-only
Kind
personal blog
Feed
https://learn.microsoft.com/en-us/archive/blogs/doronh/feed.xml

2010 6

  1. Developing Drivers with the Windows® Driver Foundation, i.e. the WDF book, is apparently back in print!
  2. Developing Drivers with the Windows® Driver Foundation, i.e. the WDF book, is apparently out of print
  3. Arbitration and Translation, Part 3
  4. Arbitration and Translation, Part 1
  5. WDK v7.1 is now available
  6. What is IRQL?

2009 5

  1. WDFREQUESTs are for sharing in KMDF v1.9
  2. WDFREQUESTs are not for sharing
  3. Great WinHEC presentation on device interfaces compared to device clases
  4. MSDN link on how to set up a user or kernel debugger
  5. Dude, what happened to Doron?

2008 11

  1. How do I cancel an IRP that another thread may be completing at the same time?
  2. What should you change in a sample before you ship it?
  3. The WDF 1.7 cointstallers are now available
  4. Debugger commands (.step_filter) that make my life easier
  5. EvtDevicePreprocessWdmIrp is not entirely free
  6. Using KeAcquireSpinLockAtDpcLevel is only a perf gain if you know you are DISPATCH_LEVEL
  7. Inconceivableable
  8. Once not disableable, forever not disableable
  9. Returning failure from DriverEntry
  10. one of the books that started it all...
  11. Getting 64 bit Vista to open my Inbox the way I want it to

2007 40

  1. A must have book for any Windows developer
  2. Device installation on Vista failing when it used to work?
  3. How to share HW resources with another driver not in the same PnP hierarchy
  4. WdfDeviceRetrieveDeviceInterfaceString and PDOs
  5. Setting a security descriptor on a legacy device object
  6. Fast Resume and how if affects your driver
  7. Vista IO manager changes in handling FILE_DEVICE_SECURE_OPEN
  8. Making sure the IO manager evaluates the security of your device
  9. Devices and namespaces (or how the IO manager handles file creation)
  10. Having two names is not necessarily better than one, part 2
  11. Of Pipes and Endpoints
  12. User empathy is a weird thing
  13. OT: Viewing a multi page TIF in Vista
  14. I’m a slacker
  15. Link to some WinHEC related videos
  16. Attending BlueHat today
  17. Creating symbolic links for an anonymous FDO or filter
  18. Having two names is not necessarily better than one
  19. The WDK ISO download link has been moved off of WHDC
  20. Better control over /GS stack checking in your driver
  21. Your completion routine context can be anything you want
  22. Filtering HID collections and setting I/O flags
  23. Changes to !poreqlist
  24. More Vista remove lock (remlock) changes
  25. Supporting query interface in KMDF
  26. INTERFACEs can contain both input and output parameters…and not just function pointers
  27. Power relationships in a bus driver
  28. Problems associated with arming yourself for wake
  29. Which callback is called on surprise or graceful removal?
  30. New behind the code on channel 9
  31. I can't imagine how much work it would be to actually /write/ a book
  32. How many Power IRPs can I have pended in my stack at one time?
  33. Which PnP and power IRPs are synchronized against each other?
  34. Which PnP IRPs are state changing?
  35. Where do I ask driver related questions?
  36. How does WdfDeviceSetFailed work? (AKA the case of the missing WDK documentation for REENUMERATE_SELF_INTERFACE_STANDARD)
  37. I have been quiet over the past 2 weeks
  38. Concise and easy to use parameter types in KMDF
  39. Starting the year off with a potentially bad addiction...
  40. Annotation (SAL) of the day: __reserved

2006 122

  1. Where are the WDF files in the WDK?
  2. Should I use the chk or fre KMDF coinstaller?
  3. How to return the number of bytes required for a subsequent operation
  4. Creating your own InterlockedXxx operation
  5. Why you want to use POBJECT_TYPEs when converting handles to objects
  6. What is POBJECT_TYPE?
  7. Getting Vista to open my Inbox the way I want it to
  8. Support for double checked locking
  9. Have you been waiting for a book on WDF?
  10. New POBJECT_TYPE exports documented in the WDK
  11. Where did my debug output go in Vista?
  12. What is the serial enumeration protocol?
  13. The case of amazingly morphing intrinsic function
  14. The Vista party is today. Schweet, I finally get to attend another ship party!
  15. Another WDF blogger
  16. Weird side affect of the day: #defines can be used in your .def file
  17. New Driver Verifier feature for Vista: runtime checking for remove locks on fre OS builds
  18. Strings read from the registry are not guaranteed to be NULL terminated
  19. The override keyword can be used in C++ afterall (redux on refactoring virtual functions)
  20. How I refactor virtual functions
  21. Hindsight is 20/20, EvtDriverUnload should have not been in KMDF
  22. Another Server 2003 SP1 DDK link
  23. Annotating fall through case statements in a switch
  24. Using ntintsafe.h is a great idea, but I don't know how readable the results are
  25. It's been a while since I last wrote...
  26. Programming notes, past and near future
  27. Two more Channel 9 links
  28. On vacation retroactively
  29. There are class filter drivers and then there are device filter drivers
  30. Peter Wieland is now on Channel 9
  31. There are class drivers and then there are class filter drivers
  32. WDM to KMDF porting guide now available on WHDC
  33. How PS2 and HID keyboads report power button events
  34. How are power buttons reported in Windows?
  35. How do I debug a failed device install or disable?
  36. Symbolic links need protection?
  37. I want my sleep key back! (or how to hibernate a machine from your app)
  38. A NULL and zero wait timeout are not the same
  39. How do I know which symbolic link is being opened?
  40. How do I know which device interface is being opened?
  41. Formatting a WDFREQUEST for any IRP_MJ code
  42. Look Ma, I'm on Channel 9!
  43. Debugger command (!list) that makes my life easier
  44. Debugger command (dl) that makes my life easier
  45. IoSetCompletionRoutineEx is not a drop in replacement for IoSetCompletionRoutine
  46. Why is there an Ex and Io work item in WDM?
  47. Turning setupapi logging up to 11
  48. Enhanced Work Item Support in Vista
  49. Viewing your KMDF log in a mini-dump (and other post mortem features)
  50. Customizing the KMDF log for your driver
  51. How can I view the KMDF log for my driver?
  52. Threaded and non-threaded PIRPs
  53. Can I send synchronous I/O on an asynchronous (OVERLAPPED) handle?
  54. A friend of mine is interviewed by Major Nelson
  55. Dr Dobbs article related to Windows PnP
  56. Why is my completion routine's DeviceObject NULL?
  57. Apple's Secure Coding Guide
  58. Debugger commands (stack frame navigation) that makes my life easier
  59. The duality of IoRegisterPlugPlayNotification and when you should call it
  60. New debugger package is now public
  61. An easy way to leak pool and locked pages (e.g. sometimes you have to free Irp->MdlAddress)
  62. WHDC links for platform and driver writing blogs
  63. Trivia: what's in a name?
  64. DeviceQuestionsForMe
  65. Debugger commands (!error, .enable_long_status) that makes my life easier
  66. What is ContextSizeOverride and how do I use it?
  67. At what IRQL does EvtObjectCleanup get called at?
  68. UMDF 1.0 Beta is now out
  69. Which lock should I use and why?
  70. How can I be notified about system state transition before they happen?
  71. Sorry about the lack of posts
  72. When is a reported PDO recognized as PDO by PnP?
  73. Not a big fan of #ifdef or #ifndef
  74. SDV and PreFast for Drivers (PFD) article on CNET
  75. What did you think of WinHEC?
  76. How to create an exclusive device or debug why your device is exclusive
  77. Previous command completion in WinDBG
  78. Will be at WinHEC this week
  79. How do I track leaked references on KMDF handles?
  80. What does the KMDF verifier do?
  81. Yet another verifier? Yeah, KMDF has one too!
  82. KMDF V1.1 is now available
  83. OS differences when ejecting an unstarted PDO
  84. How to break in at the call site that invokes the break point
  85. Debugger commands (gu) that make my life easier
  86. Why does /FASTDETECT exist and how did it get its name?
  87. How to test PnP state changes in your driver
  88. My leave is over
  89. Programming Note
  90. Debugger commands (!bpid) that make my life easier (part 6)
  91. Debugger commands (dps, dpp) that make my life easier (part 5)
  92. Avoiding #defines for constant data and using enums instead
  93. Debugger commands (!sd) that make my life easier (part 3.1)
  94. Debugger commands (dt, ??) that make my life easier (part 4)
  95. Debugger commands (!object) that make my life easier (part 3)
  96. Real life usage of loading a driver as a dump file
  97. Debugger commands (!poaction, !poreqlist) that make my life easier (part 2)
  98. Debugger commands (!drvobj, !devobj, !podev, !devstack) that make my life easier (part 1)
  99. How to debug missing imports at driver load time
  100. Loading your driver in user mode
  101. Great articles on DMA
  102. Beware the shiny light that is MmIsAddressValid
  103. The return value from RtlCompareMemory and memcmp do not mean the same thing!
  104. String buffers and IRQL
  105. How can a NULL terminated string be misinterpreted in a UNICODE_STRING?
  106. How to correctly initialize a UNICODE_STRING
  107. ntstrsafe.h now contains safe functions for UNICODE_STRING too!
  108. How should I handle symbolic links and IRP_MN_SURPRISE_REMOVAL
  109. How should I handle my hardware when processing IRP_MN_SURPRSISE_REMOVAL?
  110. Do I have to handle IRP_MN_SURPRISE_REMOVAL?
  111. Why does my device interface disappear when I replug my device back in?
  112. When should I disable my device interface & deregister with WMI?
  113. I like FORCEINLINE
  114. Why KMDF does not have a callback for IRP_MN_QUERY_POWER/SystemPowerState
  115. How are WMI instance IDs guaranteed to be unique?
  116. How are device interface strings guaranteed to be unique?
  117. Why am I not seeing any new device notifications when calling RegisterDeviceNotification?
  118. Glossary
  119. DeviceSuggestions
  120. PDOs, part 1
  121. KMDF v1.1 announced and it supports Windows 2000!
  122. Intro