<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>