| 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 |  | 
 
 
 
 
 | 32 | typedef 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 |  | 
 
 
 
 
 | 43 | typedef struct _USBRPM_DEVICE_LIST { | 
 
 
 
 
 | 44 | ULONG NumberOfDevices; | 
 
 
 
 
 | 45 | USBRPM_DEVICE_INFORMATION Device[0]; | 
 
 
 
 
 | 46 | } USBRPM_DEVICE_LIST, *PUSBRPM_DEVICE_LIST; | 
 
 
 
 
 | 47 |  | 
 
 
 
 
 | 48 | USBRPMAPI | 
 
 
 
 
 | 49 | NTSTATUS | 
 
 
 
 
 | 50 | NTAPI | 
 
 
 
 
 | 51 | RPMRegisterAlternateDriver( | 
 
 
 
 
 | 52 | PDRIVER_OBJECT  DriverObject, | 
 
 
 
 
 | 53 | LPCWSTR CompatibleId, | 
 
 
 
 
 | 54 | PHANDLE RegisteredDriver); | 
 
 
 
 
 | 55 |  | 
 
 
 
 
 | 56 | USBRPMAPI | 
 
 
 
 
 | 57 | NTSTATUS | 
 
 
 
 
 | 58 | NTAPI | 
 
 
 
 
 | 59 | RPMUnregisterAlternateDriver( | 
 
 
 
 
 | 60 | HANDLE RegisteredDriver); | 
 
 
 
 
 | 61 |  | 
 
 
 
 
 | 62 | USBRPMAPI | 
 
 
 
 
 | 63 | NTSTATUS | 
 
 
 
 
 | 64 | RPMGetAvailableDevices( | 
 
 
 
 
 | 65 | HANDLE RegisteredDriver, | 
 
 
 
 
 | 66 | USHORT Locale, | 
 
 
 
 
 | 67 | PUSBRPM_DEVICE_LIST *DeviceList); | 
 
 
 
 
 | 68 |  | 
 
 
 
 
 | 69 | USBRPMAPI | 
 
 
 
 
 | 70 | NTSTATUS | 
 
 
 
 
 | 71 | NTAPI | 
 
 
 
 
 | 72 | RPMLoadAlternateDriverForDevice( | 
 
 
 
 
 | 73 | HANDLE RegisteredDriver, | 
 
 
 
 
 | 74 | ULONG64 HubID, | 
 
 
 
 
 | 75 | ULONG ConnectionIndex, | 
 
 
 
 
 | 76 | REFGUID OwnerGuid); | 
 
 
 
 
 | 77 |  | 
 
 
 
 
 | 78 | USBRPMAPI | 
 
 
 
 
 | 79 | NTSTATUS | 
 
 
 
 
 | 80 | NTAPI | 
 
 
 
 
 | 81 | RPMUnloadAlternateDriverForDevice( | 
 
 
 
 
 | 82 | HANDLE RegisteredDriver, | 
 
 
 
 
 | 83 | ULONG64 HubID, | 
 
 
 
 
 | 84 | ULONG ConnectionIndex); |