How do i figure out which host contains my driver?
Let's say you're luck enough to have more than one user-mode driver running on your system. How would you figure out which is running your driver?
Let's take my laptop. By luck i happen to have installed both the UMDF skeleton and echo drivers. I'm interested in debugging the echo driver (the skeleton does almost nothing so it's not really worth debugging :) ). Device manager shows me this:
And there are two host processes:
tasklist | findstr -i wudfhost.exe
WUDFHost.exe 4668 Services 0 3,572 K
WUDFHost.exe 4296 Services 0 3,540 K
How do i know which is which?
Praveen found a really good trick for this. Tasklist has a /M flag which lets you look for processes with a particular module loaded. So i if i want to know which host has wudfechodriver.dll loaded i can simply run:
tasklist /m wudfechodriver.dll
Image Name PID Modules
WUDFHost.exe 4668 WUDFEchoDriver.dll
Note that you need to do this from an elevated command window on Vista - WUDFHost runs as LocalService in session 0 and isn't normally visible to an unelevated process.
Also if you're a PowerShell sort of person (as i'm rapidly becoming) you could run:
foreach($p in get-process wudfhost) {
$p | format-table
$p.Modules |
? {$_.FileName -like "$env:windir\system32\drivers\umdf\*"} |
format-table -autosize
}
to get:
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
------- ------ ----- ----- ----- ------ -- -----------
124 3 2092 3508 31 0.05 4296 WUDFHost
Size(K) ModuleName FileName
------- ---------- --------
24 UMDFSkeleton.dll C:\Windows\System32\drivers\UMDF\UMDFSkeleton.dll
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
------- ------ ----- ----- ----- ------ -- -----------
124 3 2100 3568 31 0.03 4668 WUDFHost
Size(K) ModuleName FileName
------- ---------- --------
28 WUDFEchoDriver.dll C:\Windows\System32\drivers\UMDF\WUDFEchoDriver.dll
I like this technique a little more because it shows all the hosts and lists every UMDF driver that's loaded in that host, not just the one you were asking about. But it requires you to use PowerShell.
Comments
- Anonymous
May 15, 2007
PingBack from http://testsubdomain.netmoviehost.com/how-do-i-figure-out-which-host-contains-my-driver/