c6ee0c4a6a03578c015a0c8d0d7f1a3973943c2b
[reactos.git] / reactos / include / psdk / usbrpmif.h
1 #pragma once
2
3 #include "windef.h"
4 #include "usb100.h"
5
6 #if !defined(_USBRPM_DRIVER_)
7 #define USBRPMAPI DECLSPEC_IMPORT
8 #else
9 #define USBRPMAPI
10 #endif
11
12 typedef struct _USBRPM_DEVICE_INFORMATION {
13 ULONG64 HubId;
14 ULONG ConnectionIndex;
15 UCHAR DeviceClass;
16 USHORT VendorId;
17 USHORT ProductId;
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;
22
23 typedef struct _USBRPM_DEVICE_LIST {
24 ULONG NumberOfDevices;
25 USBRPM_DEVICE_INFORMATION Device[0];
26 } USBRPM_DEVICE_LIST, *PUSBRPM_DEVICE_LIST;
27
28 USBRPMAPI
29 NTSTATUS
30 NTAPI
31 RPMRegisterAlternateDriver(
32 IN PDRIVER_OBJECT DriverObject,
33 IN LPCWSTR CompatibleId,
34 OUT PHANDLE RegisteredDriver);
35
36 USBRPMAPI
37 NTSTATUS
38 NTAPI
39 RPMUnregisterAlternateDriver(
40 IN HANDLE RegisteredDriver);
41
42 USBRPMAPI
43 NTSTATUS
44 RPMGetAvailableDevices(
45 IN HANDLE RegisteredDriver,
46 IN USHORT Locale,
47 OUT PUSBRPM_DEVICE_LIST *DeviceList);
48
49 USBRPMAPI
50 NTSTATUS
51 NTAPI
52 RPMLoadAlternateDriverForDevice(
53 IN HANDLE RegisteredDriver,
54 IN ULONG64 HubID,
55 IN ULONG ConnectionIndex,
56 IN OPTIONAL REFGUID OwnerGuid);
57
58 USBRPMAPI
59 NTSTATUS
60 NTAPI
61 RPMUnloadAlternateDriverForDevice(
62 IN HANDLE RegisteredDriver,
63 IN ULONG64 HubID,
64 IN ULONG ConnectionIndex);