<table cellspacing="0" cellpadding="0" border="0" ><tr><td valign="top" style="font: inherit;"><DIV>This api simply returns a device object from a name, and usually does not block. What is the <BR>device name? you can examine <FONT size=2>ObjectName unicode string.</FONT></DIV>
<DIV><FONT size=2> <FONT size=2></DIV>
<DIV>IoGetDeviceObjectPointer() does the following thing:</DIV>
<DIV></FONT></FONT> <FONT size=2></DIV>
<DIV>ZwOpenFile(ObjectName) to get a handle</DIV><FONT size=2>
<DIV>ObReferenceObjectByHandle(handle) to get the FileObject</DIV><FONT size=2>
<DIV>IoGetRelatedDeviceObject(FileObject) to get the device object</DIV>
<DIV> </DIV>
<DIV>you can further step into the assembly code to nail down which function call causes the lock.</DIV>
<DIV> </DIV>
<DIV>you can also list all locks using these commands in windbg:</DIV>
<DIV> </DIV>
<DIV>!locks</DIV>
<DIV>!deadlock</DIV></FONT></FONT></FONT>
<DIV> <BR>--- On <B>Tue, 3/13/12, Ribhi Kamal <I><rbhkamal@gmail.com></I></B> wrote:<BR></DIV>
<BLOCKQUOTE style="BORDER-LEFT: rgb(16,16,255) 2px solid; PADDING-LEFT: 5px; MARGIN-LEFT: 5px"><BR>From: Ribhi Kamal <rbhkamal@gmail.com><BR>Subject: Re: [vbox-dev] IoGetDeviceObjectPointer hangs vboxusbmon<BR>To: "vbox-dev" <vbox-dev@virtualbox.org><BR>Date: Tuesday, March 13, 2012, 10:49 AM<BR><BR>
<DIV id=yiv1767684798>Sorry, actually the IRQL == PASSIVE_LEVEL is okay. So just ignore that bit.<BR><BR>
<DIV class=yiv1767684798gmail_quote>On Tue, Mar 13, 2012 at 1:27 PM, Ribhi Kamal <SPAN dir=ltr><<A href="http://us.mc1603.mail.yahoo.com/mc/compose?to=rbhkamal@gmail.com" rel=nofollow target=_blank ymailto="mailto:rbhkamal@gmail.com">rbhkamal@gmail.com</A>></SPAN> wrote:<BR>
<BLOCKQUOTE style="BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex" class=yiv1767684798gmail_quote>
<DIV class=yiv1767684798HOEnZb>
<DIV class=yiv1767684798h5>
<DIV class=yiv1767684798gmail_quote>I've been troubleshooting an issue that prevents vbox from capturing USB devices when other specific USB devices are plugged in (i.e. Sprint USB crap). I finally managed to track down the problem to IoGetDeviceObjectPointer in VboxUsbMonHubDevWalk. IoGetDeviceObjectPointer was getting called, however, it never returned.
<DIV><BR></DIV>
<DIV>I'm not an expert in windows driver development so I'd like to run things by you before I start fixing it.</DIV>
<DIV><BR></DIV>
<DIV>Firstly, I'm not really sure why it hangs (deadlocks?) there for some devices and not others. However, I believe that it may be due to the fact that some driver interfaces cause blocking PnP events. Due to that, vboxusbmon runs into a deadlock when executing IoGetDeviceObjectPointer because it is being used directly from a callback function, VBoxUsbMonDeviceControl, and IRQL==PASSIVE_LEVEL.<BR>
<DIV>
<DIV><BR></DIV>
<DIV>What led me to that conclusion is that right after IoGetDeviceObjectPointer is executed, I start seeing lots of PnP events.</DIV>
<DIV>
<DIV>USBMon::vboxUsbMonHubDevWalk:   </DIV>
<DIV>IoGetDeviceObjectPointer - Starting     </DIV>
<DIV><BR></DIV>
<DIV>USBMon::VBoxUsbMonPnPHook:      </DIV>
<DIV>VBoxUsbMonPnPHook In    </DIV>
<DIV><BR></DIV>
<DIV>USBMon::VBoxUsbMonPnPHook:      </DIV>
<DIV>==>PnP: Mn(IRP_MN_QUERY_DEVICE_RELATIONS), PDO(0x8833d028), IRP(0x882a71a8), Status(0xc00000bb) </DIV>
<DIV><BR></DIV>
<DIV>See attached for complete debug view.</DIV>
<DIV><BR></DIV>
<DIV>Are my assumptions correct? If so how would you go about fixing the problem.<BR></DIV></DIV>
<DIV><BR></DIV>
<DIV>Thanks!</DIV></DIV></DIV></DIV>
<DIV><BR></DIV>-- <BR>-- Ribhi<BR></DIV></DIV></BLOCKQUOTE></DIV><BR><BR clear=all>
<DIV><BR></DIV>-- <BR>-- Ribhi<BR></DIV><BR>-----Inline Attachment Follows-----<BR><BR>
<DIV class=plainMail>_______________________________________________<BR>vbox-dev mailing list<BR><A href="http://us.mc1603.mail.yahoo.com/mc/compose?to=vbox-dev@virtualbox.org" ymailto="mailto:vbox-dev@virtualbox.org">vbox-dev@virtualbox.org</A><BR><A href="https://www.virtualbox.org/mailman/listinfo/vbox-dev" target=_blank>https://www.virtualbox.org/mailman/listinfo/vbox-dev</A><BR></DIV></BLOCKQUOTE></td></tr></table>