4 * This file is part of the ReactOS PSDK package.
7 * Created by Amine Khaldi <amine.khaldi@reactos.org>
9 * THIS SOFTWARE IS NOT COPYRIGHTED
11 * This source code is offered for use in the public domain. You may
12 * use, modify or distribute it freely.
14 * This code is distributed in the hope that it will be useful but
15 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
16 * DISCLAIMED. This includes but is not limited to warranties of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
26 #if !defined(_USBRPM_DRIVER_)
27 #define USBRPMAPI DECLSPEC_IMPORT
32 typedef struct _USBRPM_DEVICE_INFORMATION
{
34 ULONG ConnectionIndex
;
38 WCHAR ManufacturerString
[MAXIMUM_USB_STRING_LENGTH
];
39 WCHAR ProductString
[MAXIMUM_USB_STRING_LENGTH
];
40 WCHAR HubSymbolicLinkName
[MAX_PATH
];
41 } USBRPM_DEVICE_INFORMATION
, *PUSBRPM_DEVICE_INFORMATION
;
43 typedef struct _USBRPM_DEVICE_LIST
{
44 ULONG NumberOfDevices
;
45 USBRPM_DEVICE_INFORMATION Device
[0];
46 } USBRPM_DEVICE_LIST
, *PUSBRPM_DEVICE_LIST
;
51 RPMRegisterAlternateDriver(
52 IN PDRIVER_OBJECT DriverObject
,
53 IN LPCWSTR CompatibleId
,
54 OUT PHANDLE RegisteredDriver
);
59 RPMUnregisterAlternateDriver(
60 IN HANDLE RegisteredDriver
);
64 RPMGetAvailableDevices(
65 IN HANDLE RegisteredDriver
,
67 OUT PUSBRPM_DEVICE_LIST
*DeviceList
);
72 RPMLoadAlternateDriverForDevice(
73 IN HANDLE RegisteredDriver
,
75 IN ULONG ConnectionIndex
,
76 IN OPTIONAL REFGUID OwnerGuid
);
81 RPMUnloadAlternateDriverForDevice(
82 IN HANDLE RegisteredDriver
,
84 IN ULONG ConnectionIndex
);