6 #if !defined(_USBRPM_DRIVER_)
7 #define USBRPMAPI DECLSPEC_IMPORT
12 typedef struct _USBRPM_DEVICE_INFORMATION
{
14 ULONG ConnectionIndex
;
18 WCHAR ManufacturerString
[MAXIMUM_USB_STRING_LENGTH
];
19 WCHAR ProductString
[MAXIMUM_USB_STRING_LENGTH
];
20 WCHAR HubSymbolicLinkName
[MAX_PATH
];
21 } USBRPM_DEVICE_INFORMATION
, *PUSBRPM_DEVICE_INFORMATION
;
23 typedef struct _USBRPM_DEVICE_LIST
{
24 ULONG NumberOfDevices
;
25 USBRPM_DEVICE_INFORMATION Device
[0];
26 } USBRPM_DEVICE_LIST
, *PUSBRPM_DEVICE_LIST
;
31 RPMRegisterAlternateDriver(
32 IN PDRIVER_OBJECT DriverObject
,
33 IN LPCWSTR CompatibleId
,
34 OUT PHANDLE RegisteredDriver
);
39 RPMUnregisterAlternateDriver(
40 IN HANDLE RegisteredDriver
);
44 RPMGetAvailableDevices(
45 IN HANDLE RegisteredDriver
,
47 OUT PUSBRPM_DEVICE_LIST
*DeviceList
);
52 RPMLoadAlternateDriverForDevice(
53 IN HANDLE RegisteredDriver
,
55 IN ULONG ConnectionIndex
,
56 IN OPTIONAL REFGUID OwnerGuid
);
61 RPMUnloadAlternateDriverForDevice(
62 IN HANDLE RegisteredDriver
,
64 IN ULONG ConnectionIndex
);