A Hole In My Head
learn.microsoft.com/en-us/archive/blogs/doronh
Doron Holan's musings on drivers and other nibbles and bits
- 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
- Developing Drivers with the Windows® Driver Foundation, i.e. the WDF book, is apparently back in print!
- Developing Drivers with the Windows® Driver Foundation, i.e. the WDF book, is apparently out of print
- Arbitration and Translation, Part 3
- Arbitration and Translation, Part 1
- WDK v7.1 is now available
- What is IRQL?
2009 5
2008 11
- How do I cancel an IRP that another thread may be completing at the same time?
- What should you change in a sample before you ship it?
- The WDF 1.7 cointstallers are now available
- Debugger commands (.step_filter) that make my life easier
- EvtDevicePreprocessWdmIrp is not entirely free
- Using KeAcquireSpinLockAtDpcLevel is only a perf gain if you know you are DISPATCH_LEVEL
- Inconceivableable
- Once not disableable, forever not disableable
- Returning failure from DriverEntry
- one of the books that started it all...
- Getting 64 bit Vista to open my Inbox the way I want it to
2007 40
- A must have book for any Windows developer
- Device installation on Vista failing when it used to work?
- How to share HW resources with another driver not in the same PnP hierarchy
- WdfDeviceRetrieveDeviceInterfaceString and PDOs
- Setting a security descriptor on a legacy device object
- Fast Resume and how if affects your driver
- Vista IO manager changes in handling FILE_DEVICE_SECURE_OPEN
- Making sure the IO manager evaluates the security of your device
- Devices and namespaces (or how the IO manager handles file creation)
- Having two names is not necessarily better than one, part 2
- Of Pipes and Endpoints
- User empathy is a weird thing
- OT: Viewing a multi page TIF in Vista
- I’m a slacker
- Link to some WinHEC related videos
- Attending BlueHat today
- Creating symbolic links for an anonymous FDO or filter
- Having two names is not necessarily better than one
- The WDK ISO download link has been moved off of WHDC
- Better control over /GS stack checking in your driver
- Your completion routine context can be anything you want
- Filtering HID collections and setting I/O flags
- Changes to !poreqlist
- More Vista remove lock (remlock) changes
- Supporting query interface in KMDF
- INTERFACEs can contain both input and output parameters…and not just function pointers
- Power relationships in a bus driver
- Problems associated with arming yourself for wake
- Which callback is called on surprise or graceful removal?
- New behind the code on channel 9
- I can't imagine how much work it would be to actually /write/ a book
- How many Power IRPs can I have pended in my stack at one time?
- Which PnP and power IRPs are synchronized against each other?
- Which PnP IRPs are state changing?
- Where do I ask driver related questions?
- How does WdfDeviceSetFailed work? (AKA the case of the missing WDK documentation for REENUMERATE_SELF_INTERFACE_STANDARD)
- I have been quiet over the past 2 weeks
- Concise and easy to use parameter types in KMDF
- Starting the year off with a potentially bad addiction...
- Annotation (SAL) of the day: __reserved
2006 122
- Where are the WDF files in the WDK?
- Should I use the chk or fre KMDF coinstaller?
- How to return the number of bytes required for a subsequent operation
- Creating your own InterlockedXxx operation
- Why you want to use POBJECT_TYPEs when converting handles to objects
- What is POBJECT_TYPE?
- Getting Vista to open my Inbox the way I want it to
- Support for double checked locking
- Have you been waiting for a book on WDF?
- New POBJECT_TYPE exports documented in the WDK
- Where did my debug output go in Vista?
- What is the serial enumeration protocol?
- The case of amazingly morphing intrinsic function
- The Vista party is today. Schweet, I finally get to attend another ship party!
- Another WDF blogger
- Weird side affect of the day: #defines can be used in your .def file
- New Driver Verifier feature for Vista: runtime checking for remove locks on fre OS builds
- Strings read from the registry are not guaranteed to be NULL terminated
- The override keyword can be used in C++ afterall (redux on refactoring virtual functions)
- How I refactor virtual functions
- Hindsight is 20/20, EvtDriverUnload should have not been in KMDF
- Another Server 2003 SP1 DDK link
- Annotating fall through case statements in a switch
- Using ntintsafe.h is a great idea, but I don't know how readable the results are
- It's been a while since I last wrote...
- Programming notes, past and near future
- Two more Channel 9 links
- On vacation retroactively
- There are class filter drivers and then there are device filter drivers
- Peter Wieland is now on Channel 9
- There are class drivers and then there are class filter drivers
- WDM to KMDF porting guide now available on WHDC
- How PS2 and HID keyboads report power button events
- How are power buttons reported in Windows?
- How do I debug a failed device install or disable?
- Symbolic links need protection?
- I want my sleep key back! (or how to hibernate a machine from your app)
- A NULL and zero wait timeout are not the same
- How do I know which symbolic link is being opened?
- How do I know which device interface is being opened?
- Formatting a WDFREQUEST for any IRP_MJ code
- Look Ma, I'm on Channel 9!
- Debugger command (!list) that makes my life easier
- Debugger command (dl) that makes my life easier
- IoSetCompletionRoutineEx is not a drop in replacement for IoSetCompletionRoutine
- Why is there an Ex and Io work item in WDM?
- Turning setupapi logging up to 11
- Enhanced Work Item Support in Vista
- Viewing your KMDF log in a mini-dump (and other post mortem features)
- Customizing the KMDF log for your driver
- How can I view the KMDF log for my driver?
- Threaded and non-threaded PIRPs
- Can I send synchronous I/O on an asynchronous (OVERLAPPED) handle?
- A friend of mine is interviewed by Major Nelson
- Dr Dobbs article related to Windows PnP
- Why is my completion routine's DeviceObject NULL?
- Apple's Secure Coding Guide
- Debugger commands (stack frame navigation) that makes my life easier
- The duality of IoRegisterPlugPlayNotification and when you should call it
- New debugger package is now public
- An easy way to leak pool and locked pages (e.g. sometimes you have to free Irp->MdlAddress)
- WHDC links for platform and driver writing blogs
- Trivia: what's in a name?
- DeviceQuestionsForMe
- Debugger commands (!error, .enable_long_status) that makes my life easier
- What is ContextSizeOverride and how do I use it?
- At what IRQL does EvtObjectCleanup get called at?
- UMDF 1.0 Beta is now out
- Which lock should I use and why?
- How can I be notified about system state transition before they happen?
- Sorry about the lack of posts
- When is a reported PDO recognized as PDO by PnP?
- Not a big fan of #ifdef or #ifndef
- SDV and PreFast for Drivers (PFD) article on CNET
- What did you think of WinHEC?
- How to create an exclusive device or debug why your device is exclusive
- Previous command completion in WinDBG
- Will be at WinHEC this week
- How do I track leaked references on KMDF handles?
- What does the KMDF verifier do?
- Yet another verifier? Yeah, KMDF has one too!
- KMDF V1.1 is now available
- OS differences when ejecting an unstarted PDO
- How to break in at the call site that invokes the break point
- Debugger commands (gu) that make my life easier
- Why does /FASTDETECT exist and how did it get its name?
- How to test PnP state changes in your driver
- My leave is over
- Programming Note
- Debugger commands (!bpid) that make my life easier (part 6)
- Debugger commands (dps, dpp) that make my life easier (part 5)
- Avoiding #defines for constant data and using enums instead
- Debugger commands (!sd) that make my life easier (part 3.1)
- Debugger commands (dt, ??) that make my life easier (part 4)
- Debugger commands (!object) that make my life easier (part 3)
- Real life usage of loading a driver as a dump file
- Debugger commands (!poaction, !poreqlist) that make my life easier (part 2)
- Debugger commands (!drvobj, !devobj, !podev, !devstack) that make my life easier (part 1)
- How to debug missing imports at driver load time
- Loading your driver in user mode
- Great articles on DMA
- Beware the shiny light that is MmIsAddressValid
- The return value from RtlCompareMemory and memcmp do not mean the same thing!
- String buffers and IRQL
- How can a NULL terminated string be misinterpreted in a UNICODE_STRING?
- How to correctly initialize a UNICODE_STRING
- ntstrsafe.h now contains safe functions for UNICODE_STRING too!
- How should I handle symbolic links and IRP_MN_SURPRISE_REMOVAL
- How should I handle my hardware when processing IRP_MN_SURPRSISE_REMOVAL?
- Do I have to handle IRP_MN_SURPRISE_REMOVAL?
- Why does my device interface disappear when I replug my device back in?
- When should I disable my device interface & deregister with WMI?
- I like FORCEINLINE
- Why KMDF does not have a callback for IRP_MN_QUERY_POWER/SystemPowerState
- How are WMI instance IDs guaranteed to be unique?
- How are device interface strings guaranteed to be unique?
- Why am I not seeing any new device notifications when calling RegisterDeviceNotification?
- Glossary
- DeviceSuggestions
- PDOs, part 1
- KMDF v1.1 announced and it supports Windows 2000!
- Intro