<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Jul 13, 2017 at 3:08 PM, Sameeh Jubran <span dir="ltr"><<a href="mailto:sameeh@daynix.com" target="_blank">sameeh@daynix.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><br><div class="gmail_quote">---------- Forwarded message ----------<br>From: <b class="gmail_sendername">Sameeh Jubran</b> <span dir="ltr"><<a href="mailto:sameeh@daynix.com" target="_blank">sameeh@daynix.com</a>></span><br>Date: Thu, Jul 13, 2017 at 3:05 PM<br>Subject: Re: [vbox-dev] [PATCH] VBoxUsbMon: Hook proper driver object<br>To: Michal Necasek <<a href="mailto:michal.necasek@oracle.com" target="_blank">michal.necasek@oracle.com</a>><br>Cc: vbox-dev <<a href="mailto:vbox-dev@virtualbox.org" target="_blank">vbox-dev@virtualbox.org</a>><br><br><br><div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote"><span>On Thu, Jul 13, 2017 at 2:59 PM, Michal Necasek <span dir="ltr"><<a href="mailto:michal.necasek@oracle.com" target="_blank">michal.necasek@oracle.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><br>
Hi Sameeh/Yuri,<br>
<br>
Thanks for the patch. For us to actually accept it, the patch needs to be either explicitly licensed under MIT or submitted by someone with a signed OCA (Oracle Contributors Agreement).<br></blockquote></span><div>No problem, how should we explicitly license it under MIT?</div></div></div></div></div></div></blockquote><div><br></div><div>I confirm this patch is contributed under MIT licence (<a href="https://opensource.org/licenses/mit-license.php">https://opensource.org/licenses/mit-license.php</a>)</div><div><br></div><div>Thanks,</div><div>Yuri Benditovich @Daynix </div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_quote"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><span><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
Do you happen to know if the patch also solves interoperability problems with USBPcap?<br></blockquote></span><div>Probably but we haven't tested that.</div><div><div class="gmail-m_-7544061034763573894h5"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
<br>
Regards,<br>
Michal<div><div class="gmail-m_-7544061034763573894m_-7559097295588790609h5"><br>
<br>
On 7/12/2017 10:39 AM, Sameeh Jubran wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
From: Yuri Benditovich <<a href="mailto:yuri.benditovich@daynix.com" target="_blank">yuri.benditovich@daynix.com</a>><br>
<br>
VBoxUsbMon hooks PnP call in driver object of top level devices<br>
in stack of every hub. There is assumption that such a way it<br>
will receive PnP messages for PDOs of USB devices created by<br>
these hubs. This assumption is not always correct: if there is<br>
upper filter installed in stack of hub devices but not in stack<br>
of USB devices, the VBoxUsbMon does not receive devices' PnP<br>
messages and USB redirection does not work.<br>
---<br>
src/VBox/HostDrivers/VBoxUSB/w<wbr>in/mon/VBoxUsbFlt.cpp | 4 ++++<br>
src/VBox/HostDrivers/VBoxUSB/w<wbr>in/mon/VBoxUsbMon.cpp | 10 ++++++++++<br>
src/VBox/HostDrivers/VBoxUSB/w<wbr>in/mon/VBoxUsbMon.h | 2 ++<br>
3 files changed, 16 insertions(+)<br>
<br>
diff --git a/src/VBox/HostDrivers/VBoxUSB<wbr>/win/mon/VBoxUsbFlt.cpp b/src/VBox/HostDrivers/VBoxUSB<wbr>/win/mon/VBoxUsbFlt.cpp<br>
index bd1eeaa..63cf973 100644<br>
--- a/src/VBox/HostDrivers/VBoxUSB<wbr>/win/mon/VBoxUsbFlt.cpp<br>
+++ b/src/VBox/HostDrivers/VBoxUSB<wbr>/win/mon/VBoxUsbFlt.cpp<br>
@@ -725,6 +725,7 @@ static bool vboxUsbFltDevCheckReplugLocked<wbr>(PVBOXUSBFLT_DEVICE pDevice, PVBOXUSBF<br>
LOG(("Matching: Need replug"));<br>
/* the device needs to be filtered, but the owner changes, replug needed */<br>
bNeedReplug = true;<br>
+ EnsureDeviceIsFiltered(pDevice<wbr>->Pdo);<br>
}<br>
}<br>
else<br>
@@ -740,6 +741,7 @@ static bool vboxUsbFltDevCheckReplugLocked<wbr>(PVBOXUSBFLT_DEVICE pDevice, PVBOXUSBF<br>
{<br>
bNeedReplug = true;<br>
LOG(("Matching: Need replug"));<br>
+ EnsureDeviceIsFiltered(pDevice<wbr>->Pdo);<br>
}<br>
}<br>
}<br>
@@ -852,6 +854,7 @@ static DECLCALLBACK(BOOLEAN) vboxUsbFltFilterCheckWalker(PF<wbr>ILE_OBJECT pFile, PDE<br>
if (fFilter)<br>
{<br>
LOG(("Matching: This device SHOULD be filtered"));<br>
+ EnsureDeviceIsFiltered(Device.<wbr>Pdo);<br>
/* this device needs to be filtered, but it's not,<br>
* leave the PDO in array to issue a replug request for it<br>
* later on */<br>
@@ -1295,6 +1298,7 @@ NTSTATUS VBoxUsbFltPdoAdd(PDEVICE_OBJEC<wbr>T pPdo, BOOLEAN *pbFiltered)<br>
ASSERT_WARN(pCtx, ("zero ctx"));<br>
ASSERT_WARN(uId, ("zero uId"));<br>
pDevice->enmState = VBOXUSBFLT_DEVSTATE_CAPTURING;<br>
+ EnsureDeviceIsFiltered(pPdo);<br>
}<br>
else<br>
{<br>
diff --git a/src/VBox/HostDrivers/VBoxUSB<wbr>/win/mon/VBoxUsbMon.cpp b/src/VBox/HostDrivers/VBoxUSB<wbr>/win/mon/VBoxUsbMon.cpp<br>
index dba6c1d..307abe5 100644<br>
--- a/src/VBox/HostDrivers/VBoxUSB<wbr>/win/mon/VBoxUsbMon.cpp<br>
+++ b/src/VBox/HostDrivers/VBoxUSB<wbr>/win/mon/VBoxUsbMon.cpp<br>
@@ -1259,6 +1259,16 @@ static DECLCALLBACK(BOOLEAN) vboxUsbMonHookDrvObjWalker(PFI<wbr>LE_OBJECT pFile, PDEV<br>
return FALSE;<br>
}<br>
+<br>
+/**<br>
+* Ensure PnP hooks will be installed in the driver that<br>
+ serves USB device PDO<br>
+*/<br>
+void EnsureDeviceIsFiltered(PDEVICE<wbr>_OBJECT Pdo)<br>
+{<br>
+ vboxUsbMonHookDrvObjWalker(NUL<wbr>L, NULL, Pdo, NULL);<br>
+}<br>
+<br>
/**<br>
* Finds all USB drivers in the system and installs hooks if haven't done already.<br>
*/<br>
diff --git a/src/VBox/HostDrivers/VBoxUSB<wbr>/win/mon/VBoxUsbMon.h b/src/VBox/HostDrivers/VBoxUSB<wbr>/win/mon/VBoxUsbMon.h<br>
index b218bde..c64d789 100644<br>
--- a/src/VBox/HostDrivers/VBoxUSB<wbr>/win/mon/VBoxUsbMon.h<br>
+++ b/src/VBox/HostDrivers/VBoxUSB<wbr>/win/mon/VBoxUsbMon.h<br>
@@ -58,4 +58,6 @@ typedef FNVBOXUSBMONDEVWALKER *PFNVBOXUSBMONDEVWALKER;<br>
VOID vboxUsbMonHubDevWalk(PFNVBOXUS<wbr>BMONDEVWALKER pfnWalker, PVOID pvWalker, ULONG fFlags);<br>
+void EnsureDeviceIsFiltered(PDEVICE<wbr>_OBJECT Pdo);<br>
+<br>
#endif /* #ifndef ___VBoxUsbMon_h___ */<br>
<br>
</blockquote>
<br></div></div>
______________________________<wbr>_________________<br>
vbox-dev mailing list<br>
<a href="mailto:vbox-dev@virtualbox.org" target="_blank">vbox-dev@virtualbox.org</a><br>
<a href="https://www.virtualbox.org/mailman/listinfo/vbox-dev" rel="noreferrer" target="_blank">https://www.virtualbox.org/mai<wbr>lman/listinfo/vbox-dev</a><span class="gmail-HOEnZb"><font color="#888888"><br>
</font></span></blockquote></div></div></div><span class="gmail-HOEnZb"><font color="#888888"><span class="gmail-m_-7544061034763573894HOEnZb"><font color="#888888"><br><br clear="all"><div><br></div>-- <br><div class="gmail-m_-7544061034763573894m_-7559097295588790609gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><font size="4" color="#0b5394" face="times new roman, serif">Respectfully,<br></font><div style="font-size:12.8px;color:rgb(136,136,136)"><font size="4" color="#0b5394" face="times new roman, serif"><b><i>Sameeh Jubran</i></b></font></div><div style="font-size:12.8px;color:rgb(136,136,136)"><i style="color:rgb(7,55,99);font-family:"times new roman",serif;font-size:large"><span style="line-height:15px"><a href="https://il.linkedin.com/pub/sameeh-jubran/87/747/a8a" title="View public profile" name="m_-7544061034763573894_m_-7559097295588790609_UNIQUE_ID_SafeHtmlFilter_UNIQUE_ID_SafeHtmlFilter_UNIQUE_ID_SafeHtmlFilter_UNIQUE_ID_SafeHtmlFilter_UNIQUE_ID_SafeHtmlFilter_14e2c1de96f8c195_UNIQUE_ID_SafeHtmlFilter_SafeHtmlFilter_SafeHtmlFilter_webProfileURL" style="color:rgb(17,85,204);margin:0px;padding:0px;border-width:0px;outline:none;vertical-align:baseline;text-decoration:none" target="_blank">Linkedin</a></span></i><br></div><div style="font-size:12.8px;color:rgb(136,136,136)"><font size="4" face="times new roman, serif" color="#073763"><i>Software Engineer @ <a href="http://www.daynix.com" target="_blank">Daynix</a>.</i></font></div></div></div></div></div></div></div></div></div>
</font></span></font></span></div></div><span class="gmail-HOEnZb"><font color="#888888">
</font></span></div><span class="gmail-HOEnZb"><font color="#888888"><br><br clear="all"><div><br></div>-- <br><div class="gmail-m_-7544061034763573894gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><font size="4" color="#0b5394" face="times new roman, serif">Respectfully,<br></font><div style="font-size:12.8px;color:rgb(136,136,136)"><font size="4" color="#0b5394" face="times new roman, serif"><b><i>Sameeh Jubran</i></b></font></div><div style="font-size:12.8px;color:rgb(136,136,136)"><i style="color:rgb(7,55,99);font-family:"times new roman",serif;font-size:large"><span style="line-height:15px"><a href="https://il.linkedin.com/pub/sameeh-jubran/87/747/a8a" title="View public profile" name="m_-7544061034763573894_UNIQUE_ID_SafeHtmlFilter_UNIQUE_ID_SafeHtmlFilter_UNIQUE_ID_SafeHtmlFilter_UNIQUE_ID_SafeHtmlFilter_UNIQUE_ID_SafeHtmlFilter_14e2c1de96f8c195_UNIQUE_ID_SafeHtmlFilter_SafeHtmlFilter_SafeHtmlFilter_webProfileURL" style="color:rgb(17,85,204);margin:0px;padding:0px;border-width:0px;outline:none;vertical-align:baseline;text-decoration:none" target="_blank">Linkedin</a></span></i><br></div><div style="font-size:12.8px;color:rgb(136,136,136)"><font size="4" face="times new roman, serif" color="#073763"><i>Software Engineer @ <a href="http://www.daynix.com" target="_blank">Daynix</a>.</i></font></div></div></div></div></div></div></div></div></div>
</font></span></div>
</blockquote></div><br></div></div>