/*
* usbrpmif.h
*
* This file is part of the ReactOS PSDK package.
*
* Contributors:
* Created by Amine Khaldi <amine.khaldi@reactos.org>
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAIMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#pragma once
#include "windef.h"
#include "usb100.h"
#if !defined(_USBRPM_DRIVER_)
#define USBRPMAPI DECLSPEC_IMPORT
#else
#define USBRPMAPI
#endif
typedef struct _USBRPM_DEVICE_INFORMATION {
ULONG64 HubId;
ULONG ConnectionIndex;
UCHAR DeviceClass;
USHORT VendorId;
USHORT ProductId;
WCHAR ManufacturerString[MAXIMUM_USB_STRING_LENGTH];
WCHAR ProductString[MAXIMUM_USB_STRING_LENGTH];
WCHAR HubSymbolicLinkName[MAX_PATH];
} USBRPM_DEVICE_INFORMATION, *PUSBRPM_DEVICE_INFORMATION;
typedef struct _USBRPM_DEVICE_LIST {
ULONG NumberOfDevices;
USBRPM_DEVICE_INFORMATION Device[0];
} USBRPM_DEVICE_LIST, *PUSBRPM_DEVICE_LIST;
USBRPMAPI
NTSTATUS
NTAPI
RPMRegisterAlternateDriver(
PDRIVER_OBJECT DriverObject,
LPCWSTR CompatibleId,
PHANDLE RegisteredDriver);
USBRPMAPI
NTSTATUS
NTAPI
RPMUnregisterAlternateDriver(
HANDLE RegisteredDriver);
USBRPMAPI
NTSTATUS
RPMGetAvailableDevices(
HANDLE RegisteredDriver,
USHORT Locale,
PUSBRPM_DEVICE_LIST *DeviceList);
USBRPMAPI
NTSTATUS
NTAPI
RPMLoadAlternateDriverForDevice(
HANDLE RegisteredDriver,
ULONG64 HubID,
ULONG ConnectionIndex,
REFGUID OwnerGuid);
USBRPMAPI
NTSTATUS
NTAPI
RPMUnloadAlternateDriverForDevice(
HANDLE RegisteredDriver,
ULONG64 HubID,
ULONG ConnectionIndex);