master
 1/*
 2 * usbrpmif.h
 3 *
 4 * This file is part of the ReactOS PSDK package.
 5 *
 6 * Contributors:
 7 *   Created by Amine Khaldi <amine.khaldi@reactos.org>
 8 *
 9 * THIS SOFTWARE IS NOT COPYRIGHTED
10 *
11 * This source code is offered for use in the public domain. You may
12 * use, modify or distribute it freely.
13 *
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.
18 *
19 */
20
21#pragma once
22
23#include "windef.h"
24#include "usb100.h"
25
26#if !defined(_USBRPM_DRIVER_)
27#define USBRPMAPI DECLSPEC_IMPORT
28#else
29#define USBRPMAPI
30#endif
31
32typedef struct _USBRPM_DEVICE_INFORMATION {
33  ULONG64 HubId;
34  ULONG ConnectionIndex;
35  UCHAR DeviceClass;
36  USHORT VendorId;
37  USHORT ProductId;
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;
42
43typedef struct _USBRPM_DEVICE_LIST {
44  ULONG NumberOfDevices;
45  USBRPM_DEVICE_INFORMATION Device[0];
46} USBRPM_DEVICE_LIST, *PUSBRPM_DEVICE_LIST;
47
48USBRPMAPI
49NTSTATUS
50NTAPI
51RPMRegisterAlternateDriver(
52  PDRIVER_OBJECT  DriverObject,
53  LPCWSTR CompatibleId, 
54  PHANDLE RegisteredDriver);
55
56USBRPMAPI
57NTSTATUS
58NTAPI
59RPMUnregisterAlternateDriver(
60  HANDLE RegisteredDriver);
61
62USBRPMAPI
63NTSTATUS
64RPMGetAvailableDevices(
65  HANDLE RegisteredDriver,
66  USHORT Locale,
67  PUSBRPM_DEVICE_LIST *DeviceList);
68
69USBRPMAPI
70NTSTATUS
71NTAPI
72RPMLoadAlternateDriverForDevice(
73  HANDLE RegisteredDriver,
74  ULONG64 HubID,
75  ULONG ConnectionIndex,
76  REFGUID OwnerGuid);
77
78USBRPMAPI
79NTSTATUS
80NTAPI
81RPMUnloadAlternateDriverForDevice(
82  HANDLE RegisteredDriver,
83  ULONG64 HubID,
84  ULONG ConnectionIndex);