<table cellspacing="0" cellpadding="0" border="0" ><tr><td valign="top" style="font: inherit;"><DIV>that are useful to implement USB kernel driver to virtualize usb devices.</DIV>
<DIV> </DIV>
<DIV>These APIs should help to solve the current vbox usb issues on Windows host. For example, one issue is that when a usb is first used via vbox, the Windows host machine must be rebooted, which is really inconvenient.</DIV>
<H1><A name=usbinterKR_57351826-d8c6-4b3b-a822-2e5cc4090f6c.xml></A>RPMGetAvailableDevices</H1>
<DIV>The <B>RPMGetAvailableDevices</B> routine returns the list of attached USB devices (except hubs and HIDs).</DIV>
<P class=syntax style="PADDING-RIGHT: 4pt; PADDING-LEFT: 4pt; BACKGROUND: #dddddd; PADDING-BOTTOM: 2pt; FONT: 100% Courier New, Courier, mono; CURSOR: text; PADDING-TOP: 2pt">NTSTATUS<BR>RPMGetAvailableDevices (<BR>    IN HANDLE <A class=synParam onclick=showTip(this) href="">RegisteredDriver</A>,<BR>    IN USHORT <A class=synParam onclick=showTip(this) href="">Locale</A>,<BR>    OUT PUSBRPM_DEVICE_LIST *<A class=synParam onclick=showTip(this) href="">DeviceList</A>)</DIV>
<DIV> </DIV>
<H1><A name=usbinterKR_3f879088-a63d-47ce-be83-5e58f48ce52b.xml></A>RPMRegisterAlternateDriver</H1>
<DIV>The <B>RPMRegisterAlternateDriver</B> routine enables the client to register itself in order to load an alternate driver for a USB device.</DIV>
<P class=syntax style="PADDING-RIGHT: 4pt; PADDING-LEFT: 4pt; BACKGROUND: #dddddd; PADDING-BOTTOM: 2pt; FONT: 100% Courier New, Courier, mono; CURSOR: text; PADDING-TOP: 2pt">NTSTATUS<BR>RPMRegisterAlternateDriver(<BR>    IN PDRIVER_OBJECT  <A class=synParam onclick=showTip(this) href="">DriverObject</A>,<BR>    IN LPCWSTR  <A class=synParam onclick=showTip(this) href="">CompatibleId</A>,<BR>    OUT PHANDLE  <A class=synParam onclick=showTip(this) href="">RegisteredDriver</A>)<BR></DIV>
<DIV> </DIV>
<H1><A name=usbinterKR_498f954a-a706-4470-9f4b-42f5993d1c60.xml></A>RPMLoadAlternateDriverForDevice</H1>
<DIV>The <B>RPMLoadAlternateDriverForDevice</B> routine loads an alternate driver for the device on a particular hub and connection index.</DIV>
<P class=syntax style="PADDING-RIGHT: 4pt; PADDING-LEFT: 4pt; BACKGROUND: #dddddd; PADDING-BOTTOM: 2pt; FONT: 100% Courier New, Courier, mono; CURSOR: text; PADDING-TOP: 2pt">NTSTATUS<BR>RPMLoadAlternateDriverForDevice (<BR>    IN HANDLE <A class=synParam onclick=showTip(this) href="">RegisteredDriver</A>,<BR>    IN ULONG64 HubID,<BR>    IN ULONG <A class=synParam onclick=showTip(this) href="">ConnectionIndex</A>,<BR>    IN OPTIONAL REFGUID <A class=synParam onclick=showTip(this) href="">OwnerGuid</A>)<BR></DIV>
<DIV> </DIV>
<H1><A name=usbinterKR_18c30368-6884-4299-a968-082a09945953.xml></A>RPMUnregisterAlternateDriver</H1>
<DIV>The <B>RPMUnregisterAlternateDriver</B> routine allows the client to unregister.</DIV>
<P class=syntax style="PADDING-RIGHT: 4pt; PADDING-LEFT: 4pt; BACKGROUND: #dddddd; PADDING-BOTTOM: 2pt; FONT: 100% Courier New, Courier, mono; CURSOR: text; PADDING-TOP: 2pt">NTSTATUS<BR>RPMUnregisterAlternateDriver (<BR>    IN HANDLE  <A class=synParam onclick=showTip(this) href="">RegisteredDriver</A>)</DIV></td></tr></table>