mirror of
https://github.com/reactos/reactos.git
synced 2025-05-28 13:38:19 +00:00
Add several missing USB related definitions
svn path=/branches/header-work/; revision=45783
This commit is contained in:
parent
db8a0b34de
commit
3906d78bd2
3 changed files with 984 additions and 0 deletions
782
include/ddk/hubbusif.h
Normal file
782
include/ddk/hubbusif.h
Normal file
|
@ -0,0 +1,782 @@
|
|||
#pragma once
|
||||
|
||||
#if (NTDDI_VERSION >= NTDDI_WINXP)
|
||||
|
||||
typedef PVOID PUSB_DEVICE_HANDLE;
|
||||
|
||||
typedef struct _ROOTHUB_PDO_EXTENSION {
|
||||
ULONG Signature;
|
||||
} ROOTHUB_PDO_EXTENSION, *PROOTHUB_PDO_EXTENSION;
|
||||
|
||||
#define USBD_DEVHACK_SLOW_ENUMERATION 0x00000001
|
||||
#define USBD_DEVHACK_DISABLE_SN 0x00000002
|
||||
#define USBD_DEVHACK_SET_DIAG_ID 0x00000004
|
||||
|
||||
#ifndef USB_BUSIFFN
|
||||
#define USB_BUSIFFN __stdcall
|
||||
#endif
|
||||
|
||||
#define CD_ERR_V1 0x00000001
|
||||
|
||||
#define ID_ERR_V1 0x00000001
|
||||
|
||||
#define USBD_KEEP_DEVICE_DATA 0x00000001
|
||||
#define USBD_MARK_DEVICE_BUSY 0x00000002
|
||||
|
||||
#define USB_IDLE_NOT_READY 0
|
||||
#define USB_IDLE_READY 1
|
||||
|
||||
typedef
|
||||
NTSTATUS
|
||||
USB_BUSIFFN
|
||||
USB_BUSIFFN_CREATE_USB_DEVICE (
|
||||
IN PVOID BusContext,
|
||||
OUT PUSB_DEVICE_HANDLE *NewDeviceHandle,
|
||||
IN PUSB_DEVICE_HANDLE HubDeviceHandle,
|
||||
IN USHORT PortStatus,
|
||||
IN USHORT PortNumber);
|
||||
|
||||
typedef USB_BUSIFFN_CREATE_USB_DEVICE *PUSB_BUSIFFN_CREATE_USB_DEVICE;
|
||||
|
||||
typedef enum _USBPORT_CREATEDEV_ERROR {
|
||||
CreateDevErrNotSet = 0,
|
||||
CreateDevBadHubDevHandle,
|
||||
CreateDevFailedAllocDevHandle,
|
||||
CreateDevFailedOpenEndpoint,
|
||||
CreateDevFailedAllocDsBuff,
|
||||
CreateDevFailedGetDs,
|
||||
CreateDevTtNotFound,
|
||||
CreateDevBadDevHandlePtr
|
||||
} USBPORT_CREATEDEV_ERROR;
|
||||
|
||||
typedef struct _USB_CD_ERROR_INFORMATION {
|
||||
ULONG Version;
|
||||
USBPORT_CREATEDEV_ERROR PathError;
|
||||
ULONG UlongArg1;
|
||||
ULONG UlongArg2;
|
||||
NTSTATUS NtStatus;
|
||||
UCHAR XtraInfo[64];
|
||||
} USB_CD_ERROR_INFORMATION, *PUSB_CD_ERROR_INFORMATION;
|
||||
|
||||
typedef
|
||||
NTSTATUS
|
||||
USB_BUSIFFN
|
||||
USB_BUSIFFN_CREATE_USB_DEVICE_EX (
|
||||
IN PVOID BusContext,
|
||||
OUT PUSB_DEVICE_HANDLE *NewDeviceHandle,
|
||||
IN PUSB_DEVICE_HANDLE HsHubDeviceHandle,
|
||||
IN USHORT PortStatus,
|
||||
IN USHORT PortNumber,
|
||||
OUT PUSB_CD_ERROR_INFORMATION CdErrorInfo,
|
||||
IN USHORT TtPortNumber);
|
||||
|
||||
typedef USB_BUSIFFN_CREATE_USB_DEVICE_EX *PUSB_BUSIFFN_CREATE_USB_DEVICE_EX;
|
||||
|
||||
typedef struct _USB_PORT_PATH {
|
||||
ULONG PortPathDepth;
|
||||
ULONG PortPath[6];
|
||||
} USB_PORT_PATH, *PUSB_PORT_PATH;
|
||||
|
||||
typedef
|
||||
NTSTATUS
|
||||
USB_BUSIFFN
|
||||
USB_BUSIFFN_CREATE_USB_DEVICE_V7 (
|
||||
IN PVOID BusContext,
|
||||
OUT PUSB_DEVICE_HANDLE *NewDeviceHandle,
|
||||
IN PUSB_DEVICE_HANDLE HsHubDeviceHandle,
|
||||
IN USHORT PortStatus,
|
||||
IN PUSB_PORT_PATH PortPath,
|
||||
OUT PUSB_CD_ERROR_INFORMATION CdErrorInfo,
|
||||
IN USHORT TtPortNumber,
|
||||
IN PDEVICE_OBJECT PdoDeviceObject,
|
||||
IN PUNICODE_STRING PhysicalDeviceObjectName);
|
||||
|
||||
typedef USB_BUSIFFN_CREATE_USB_DEVICE_V7 *PUSB_BUSIFFN_CREATE_USB_DEVICE_V7;
|
||||
|
||||
typedef enum _USBPORT_INITDEV_ERROR {
|
||||
InitDevErrNotSet = 0,
|
||||
InitDevFailedSetAddress,
|
||||
InitDevFailedPokeEndpoint,
|
||||
InitDevBadDeviceDescriptor
|
||||
} USBPORT_INITDEV_ERROR;
|
||||
|
||||
typedef struct _USB_ID_ERROR_INFORMATION {
|
||||
ULONG Version;
|
||||
USBPORT_INITDEV_ERROR PathError;
|
||||
ULONG Arg1;
|
||||
ULONG UsbAddress;
|
||||
NTSTATUS NtStatus;
|
||||
USBD_STATUS UsbdStatus;
|
||||
UCHAR XtraInfo[64];
|
||||
} USB_ID_ERROR_INFORMATION, *PUSB_ID_ERROR_INFORMATION;
|
||||
|
||||
typedef
|
||||
NTSTATUS
|
||||
USB_BUSIFFN
|
||||
USB_BUSIFFN_INITIALIZE_USB_DEVICE (
|
||||
IN PVOID BusContext,
|
||||
IN OUT PUSB_DEVICE_HANDLE DeviceHandle);
|
||||
|
||||
typedef USB_BUSIFFN_INITIALIZE_USB_DEVICE *PUSB_BUSIFFN_INITIALIZE_USB_DEVICE;
|
||||
|
||||
typedef
|
||||
NTSTATUS
|
||||
USB_BUSIFFN
|
||||
USB_BUSIFFN_INITIALIZE_USB_DEVICE_EX (
|
||||
IN PVOID BusContext,
|
||||
IN OUT PUSB_DEVICE_HANDLE DeviceHandle,
|
||||
OUT PUSB_ID_ERROR_INFORMATION IdErrInfo);
|
||||
|
||||
typedef USB_BUSIFFN_INITIALIZE_USB_DEVICE_EX *PUSB_BUSIFFN_INITIALIZE_USB_DEVICE_EX;
|
||||
|
||||
typedef
|
||||
NTSTATUS
|
||||
USB_BUSIFFN
|
||||
USB_BUSIFFN_REMOVE_USB_DEVICE (
|
||||
IN PVOID BusContext,
|
||||
IN OUT PUSB_DEVICE_HANDLE DeviceHandle,
|
||||
IN ULONG Flags);
|
||||
|
||||
typedef USB_BUSIFFN_REMOVE_USB_DEVICE *PUSB_BUSIFFN_REMOVE_USB_DEVICE;
|
||||
|
||||
typedef
|
||||
NTSTATUS
|
||||
USB_BUSIFFN
|
||||
USB_BUSIFFN_GET_USB_DESCRIPTORS (
|
||||
IN PVOID BusContext,
|
||||
IN OUT PUSB_DEVICE_HANDLE DeviceHandle,
|
||||
OUT PUCHAR DeviceDescriptorBuffer,
|
||||
IN OUT PULONG DeviceDescriptorBufferLength,
|
||||
OUT PUCHAR ConfigDescriptorBuffer,
|
||||
IN OUT PULONG ConfigDescriptorBufferLength);
|
||||
|
||||
typedef USB_BUSIFFN_GET_USB_DESCRIPTORS *PUSB_BUSIFFN_GET_USB_DESCRIPTORS;
|
||||
|
||||
typedef
|
||||
NTSTATUS
|
||||
USB_BUSIFFN
|
||||
USB_BUSIFFN_RESTORE_DEVICE (
|
||||
IN PVOID BusContext,
|
||||
IN OUT PUSB_DEVICE_HANDLE OldDeviceHandle,
|
||||
IN OUT PUSB_DEVICE_HANDLE NewDeviceHandle);
|
||||
|
||||
typedef USB_BUSIFFN_RESTORE_DEVICE *PUSB_BUSIFFN_RESTORE_DEVICE;
|
||||
|
||||
typedef
|
||||
NTSTATUS
|
||||
USB_BUSIFFN
|
||||
USB_BUSIFFN_GET_POTRTHACK_FLAGS (
|
||||
IN PVOID BusContext,
|
||||
IN OUT PULONG Flags);
|
||||
|
||||
typedef USB_BUSIFFN_GET_POTRTHACK_FLAGS *PUSB_BUSIFFN_GET_POTRTHACK_FLAGS;
|
||||
|
||||
typedef
|
||||
NTSTATUS
|
||||
USB_BUSIFFN
|
||||
USB_BUSIFFN_GET_DEVICE_INFORMATION (
|
||||
IN PVOID BusContext,
|
||||
IN PUSB_DEVICE_HANDLE DeviceHandle,
|
||||
OUT PVOID DeviceInformationBuffer,
|
||||
IN ULONG DeviceInformationBufferLength,
|
||||
IN OUT PULONG LengthOfDataCopied);
|
||||
|
||||
typedef USB_BUSIFFN_GET_DEVICE_INFORMATION *PUSB_BUSIFFN_GET_DEVICE_INFORMATION;
|
||||
|
||||
typedef
|
||||
NTSTATUS
|
||||
USB_BUSIFFN
|
||||
USB_BUSIFFN_GET_CONTROLLER_INFORMATION (
|
||||
IN PVOID BusContext,
|
||||
IN OUT PVOID ControllerInformationBuffer,
|
||||
IN ULONG ControllerInformationBufferLength,
|
||||
IN OUT PULONG LengthOfDataCopied);
|
||||
|
||||
typedef USB_BUSIFFN_GET_CONTROLLER_INFORMATION *PUSB_BUSIFFN_GET_CONTROLLER_INFORMATION;
|
||||
|
||||
typedef
|
||||
NTSTATUS
|
||||
USB_BUSIFFN
|
||||
USB_BUSIFFN_CONTROLLER_SELECTIVE_SUSPEND (
|
||||
IN PVOID BusContext,
|
||||
IN BOOLEAN Enable);
|
||||
|
||||
typedef USB_BUSIFFN_CONTROLLER_SELECTIVE_SUSPEND *PUSB_BUSIFFN_CONTROLLER_SELECTIVE_SUSPEND;
|
||||
|
||||
typedef
|
||||
NTSTATUS
|
||||
USB_BUSIFFN
|
||||
USB_BUSIFFN_GET_EXTENDED_HUB_INFO (
|
||||
IN PVOID BusContext,
|
||||
IN PDEVICE_OBJECT HubPhysicalDeviceObject,
|
||||
IN PVOID HubInformationBuffer,
|
||||
IN ULONG HubInformationBufferLength,
|
||||
OUT PULONG LengthOfDataCopied);
|
||||
|
||||
typedef USB_BUSIFFN_GET_EXTENDED_HUB_INFO *PUSB_BUSIFFN_GET_EXTENDED_HUB_INFO;
|
||||
|
||||
typedef
|
||||
NTSTATUS
|
||||
USB_BUSIFFN
|
||||
USB_BUSIFFN_GET_ROOTHUB_SYM_NAME (
|
||||
IN PVOID BusContext,
|
||||
IN PVOID HubSymNameBuffer,
|
||||
IN ULONG HubSymNameBufferLength,
|
||||
OUT PULONG HubSymNameActualLength);
|
||||
|
||||
typedef USB_BUSIFFN_GET_ROOTHUB_SYM_NAME *PUSB_BUSIFFN_GET_ROOTHUB_SYM_NAME;
|
||||
|
||||
typedef
|
||||
PVOID
|
||||
USB_BUSIFFN
|
||||
USB_BUSIFFN_GET_DEVICE_BUSCONTEXT (
|
||||
IN PVOID HubBusContext,
|
||||
IN PVOID DeviceHandle);
|
||||
|
||||
typedef USB_BUSIFFN_GET_DEVICE_BUSCONTEXT *PUSB_BUSIFFN_GET_DEVICE_BUSCONTEXT;
|
||||
|
||||
typedef
|
||||
NTSTATUS
|
||||
USB_BUSIFFN
|
||||
USB_BUSIFFN_INITIALIZE_20HUB (
|
||||
IN PVOID BusContext,
|
||||
IN PUSB_DEVICE_HANDLE HubDeviceHandle,
|
||||
IN ULONG TtCount);
|
||||
|
||||
typedef USB_BUSIFFN_INITIALIZE_20HUB *PUSB_BUSIFFN_INITIALIZE_20HUB;
|
||||
|
||||
typedef
|
||||
BOOLEAN
|
||||
USB_BUSIFFN
|
||||
USB_BUSIFFN_IS_ROOT (
|
||||
IN PVOID BusContext,
|
||||
IN PVOID DeviceObject);
|
||||
|
||||
typedef USB_BUSIFFN_IS_ROOT *PUSB_BUSIFFN_IS_ROOT;
|
||||
|
||||
typedef
|
||||
VOID
|
||||
USB_BUSIFFN
|
||||
USB_BUSIFFN_ACQUIRE_SEMAPHORE (
|
||||
IN PVOID BusContext);
|
||||
|
||||
typedef USB_BUSIFFN_ACQUIRE_SEMAPHORE *PUSB_BUSIFFN_ACQUIRE_SEMAPHORE;
|
||||
|
||||
typedef
|
||||
VOID
|
||||
USB_BUSIFFN
|
||||
USB_BUSIFFN_RELEASE_SEMAPHORE (
|
||||
IN PVOID BusContext);
|
||||
|
||||
typedef USB_BUSIFFN_RELEASE_SEMAPHORE *PUSB_BUSIFFN_RELEASE_SEMAPHORE;
|
||||
|
||||
typedef
|
||||
VOID
|
||||
__stdcall
|
||||
RH_INIT_CALLBACK (
|
||||
IN PVOID CallBackContext);
|
||||
|
||||
typedef RH_INIT_CALLBACK *PRH_INIT_CALLBACK;
|
||||
|
||||
typedef
|
||||
NTSTATUS
|
||||
USB_BUSIFFN
|
||||
USB_BUSIFFN_ROOTHUB_INIT_NOTIFY (
|
||||
IN PVOID BusContext,
|
||||
IN PVOID CallbackContext,
|
||||
IN PRH_INIT_CALLBACK CallbackRoutine);
|
||||
|
||||
typedef USB_BUSIFFN_ROOTHUB_INIT_NOTIFY *PUSB_BUSIFFN_ROOTHUB_INIT_NOTIFY;
|
||||
|
||||
typedef
|
||||
VOID
|
||||
USB_BUSIFFN
|
||||
USB_BUSIFFN_FLUSH_TRANSFERS (
|
||||
IN PVOID BusContext,
|
||||
IN PVOID DeviceHandle);
|
||||
|
||||
typedef USB_BUSIFFN_FLUSH_TRANSFERS *PUSB_BUSIFFN_FLUSH_TRANSFERS;
|
||||
|
||||
typedef
|
||||
ULONG
|
||||
USB_BUSIFFN
|
||||
USB_BUSIFFN_CALC_PIPE_BANDWIDTH (
|
||||
IN PVOID BusContext,
|
||||
IN PUSBD_PIPE_INFORMATION PipeInfo,
|
||||
IN USB_DEVICE_SPEED DeviceSpeed);
|
||||
|
||||
typedef USB_BUSIFFN_CALC_PIPE_BANDWIDTH *PUSB_BUSIFFN_CALC_PIPE_BANDWIDTH;
|
||||
|
||||
typedef
|
||||
VOID
|
||||
USB_BUSIFFN
|
||||
USB_BUSIFFN_SET_BUS_WAKE_MODE (
|
||||
IN PVOID BusContext,
|
||||
IN ULONG Mode);
|
||||
|
||||
typedef USB_BUSIFFN_SET_BUS_WAKE_MODE *PUSB_BUSIFFN_SET_BUS_WAKE_MODE;
|
||||
|
||||
typedef
|
||||
VOID
|
||||
USB_BUSIFFN
|
||||
USB_BUSIFFN_SET_DEVICE_FLAG (
|
||||
IN PVOID BusContext,
|
||||
IN GUID *DeviceFlagGuid,
|
||||
IN PVOID ValueData,
|
||||
IN ULONG ValueLength);
|
||||
|
||||
typedef USB_BUSIFFN_SET_DEVICE_FLAG *PUSB_BUSIFFN_SET_DEVICE_FLAG;
|
||||
|
||||
typedef
|
||||
VOID
|
||||
USB_BUSIFFN
|
||||
USB_BUSIFFN_SET_DEVHANDLE_DATA (
|
||||
IN PVOID BusContext,
|
||||
IN PVOID DeviceHandle,
|
||||
IN PDEVICE_OBJECT UsbDevicePdo);
|
||||
|
||||
typedef USB_BUSIFFN_SET_DEVHANDLE_DATA *PUSB_BUSIFFN_SET_DEVHANDLE_DATA;
|
||||
|
||||
typedef
|
||||
NTSTATUS
|
||||
USB_BUSIFFN
|
||||
USB_BUSIFFN_TEST_POINT (
|
||||
IN PVOID BusContext,
|
||||
IN PVOID DeviceHandle,
|
||||
IN ULONG Opcode,
|
||||
IN PVOID TestData);
|
||||
|
||||
typedef USB_BUSIFFN_TEST_POINT *PUSB_BUSIFFN_TEST_POINT;
|
||||
|
||||
typedef
|
||||
NTSTATUS
|
||||
USB_BUSIFFN
|
||||
USB_BUSIFFN_GET_DEVICE_PERFORMANCE_INFO (
|
||||
IN PVOID BusContext,
|
||||
IN PUSB_DEVICE_HANDLE DeviceHandle,
|
||||
OUT PVOID DeviceInformationBuffer,
|
||||
IN ULONG DeviceInformationBufferLength,
|
||||
IN OUT PULONG LengthOfDataCopied);
|
||||
|
||||
typedef USB_BUSIFFN_GET_DEVICE_PERFORMANCE_INFO *PUSB_BUSIFFN_GET_DEVICE_PERFORMANCE_INFO;
|
||||
|
||||
typedef
|
||||
NTSTATUS
|
||||
USB_BUSIFFN
|
||||
USB_BUSIFFN_WAIT_ASYNC_POWERUP (
|
||||
IN PVOID BusContext);
|
||||
|
||||
typedef USB_BUSIFFN_WAIT_ASYNC_POWERUP *PUSB_BUSIFFN_WAIT_ASYNC_POWERUP;
|
||||
|
||||
typedef
|
||||
NTSTATUS
|
||||
USB_BUSIFFN
|
||||
USB_BUSIFFN_GET_DEVICE_ADDRESS (
|
||||
IN PVOID BusContext,
|
||||
IN PUSB_DEVICE_HANDLE DeviceHandle,
|
||||
OUT PUSHORT DeviceAddress);
|
||||
|
||||
typedef USB_BUSIFFN_GET_DEVICE_ADDRESS *PUSB_BUSIFFN_GET_DEVICE_ADDRESS;
|
||||
|
||||
typedef
|
||||
VOID
|
||||
USB_BUSIFFN
|
||||
USB_BUSIFFN_DEREF_DEVICE_HANDLE (
|
||||
IN PVOID BusContext,
|
||||
IN PUSB_DEVICE_HANDLE DeviceHandle,
|
||||
IN PVOID Object,
|
||||
IN ULONG Tag);
|
||||
|
||||
typedef USB_BUSIFFN_DEREF_DEVICE_HANDLE *PUSB_BUSIFFN_DEREF_DEVICE_HANDLE;
|
||||
|
||||
typedef
|
||||
NTSTATUS
|
||||
USB_BUSIFFN
|
||||
USB_BUSIFFN_REF_DEVICE_HANDLE (
|
||||
IN PVOID BusContext,
|
||||
IN PUSB_DEVICE_HANDLE DeviceHandle,
|
||||
IN PVOID Object,
|
||||
IN ULONG Tag);
|
||||
|
||||
typedef USB_BUSIFFN_REF_DEVICE_HANDLE *PUSB_BUSIFFN_REF_DEVICE_HANDLE;
|
||||
|
||||
typedef
|
||||
ULONG
|
||||
USB_BUSIFFN
|
||||
USB_BUSIFFN_SET_DEVICE_HANDLE_IDLE_READY_STATE (
|
||||
IN PVOID BusContext,
|
||||
IN PUSB_DEVICE_HANDLE DeviceHandle,
|
||||
IN ULONG NewIdleReadyState);
|
||||
|
||||
typedef USB_BUSIFFN_SET_DEVICE_HANDLE_IDLE_READY_STATE *PUSB_BUSIFFN_SET_DEVICE_HANDLE_IDLE_READY_STATE;
|
||||
|
||||
typedef
|
||||
NTSTATUS
|
||||
USB_BUSIFFN
|
||||
USB_BUSIFFN_GET_CONTAINER_ID_FOR_PORT (
|
||||
IN PVOID BusContext,
|
||||
IN USHORT PortNumber,
|
||||
OUT LPGUID ContainerId);
|
||||
|
||||
typedef USB_BUSIFFN_GET_CONTAINER_ID_FOR_PORT *PUSB_BUSIFFN_GET_CONTAINER_ID_FOR_PORT;
|
||||
|
||||
typedef
|
||||
VOID
|
||||
USB_BUSIFFN
|
||||
USB_BUSIFFN_SET_CONTAINER_ID_FOR_PORT (
|
||||
IN PVOID BusContext,
|
||||
IN USHORT PortNumber,
|
||||
IN LPGUID ContainerId);
|
||||
|
||||
typedef USB_BUSIFFN_SET_CONTAINER_ID_FOR_PORT *PUSB_BUSIFFN_SET_CONTAINER_ID_FOR_PORT;
|
||||
|
||||
typedef
|
||||
NTSTATUS
|
||||
USB_BUSIFFN
|
||||
USB_BUSIFFN_ABORT_ALL_DEVICE_PIPES (
|
||||
IN PVOID BusContext,
|
||||
IN PUSB_DEVICE_HANDLE DeviceHandle);
|
||||
|
||||
typedef USB_BUSIFFN_ABORT_ALL_DEVICE_PIPES *PUSB_BUSIFFN_ABORT_ALL_DEVICE_PIPES;
|
||||
|
||||
#define ERRATA_FLAG_RESET_TT_ON_CANCEL 1
|
||||
#define ERRATA_FLAG_NO_CLEAR_TT_BUFFER_ON_CANCEL 2
|
||||
|
||||
#define USB_BUSIF_HUB_VERSION_0 0x0000
|
||||
#define USB_BUSIF_HUB_VERSION_1 0x0001
|
||||
#define USB_BUSIF_HUB_VERSION_2 0x0002
|
||||
#define USB_BUSIF_HUB_VERSION_3 0x0003
|
||||
#define USB_BUSIF_HUB_VERSION_4 0x0004
|
||||
#define USB_BUSIF_HUB_VERSION_5 0x0005
|
||||
#define USB_BUSIF_HUB_VERSION_6 0x0006
|
||||
#define USB_BUSIF_HUB_VERSION_7 0x0007
|
||||
|
||||
#define USB_BUSIF_HUB_MIDUMP_VERSION_0 0x0000
|
||||
|
||||
#define USB_BUSIF_HUB_SS_VERSION_0 0x0000
|
||||
|
||||
typedef
|
||||
VOID
|
||||
USB_BUSIFFN
|
||||
USB_BUSIFFN_SET_DEVICE_ERRATA_FLAG (
|
||||
IN PVOID BusContext,
|
||||
IN PUSB_DEVICE_HANDLE DeviceHandle,
|
||||
IN ULONG DeviceErrataFlag);
|
||||
|
||||
typedef USB_BUSIFFN_SET_DEVICE_ERRATA_FLAG *PUSB_BUSIFFN_SET_DEVICE_ERRATA_FLAG;
|
||||
|
||||
DEFINE_GUID(USB_BUS_INTERFACE_HUB_GUID,
|
||||
0xb2bb8c0a, 0x5ab4, 0x11d3, 0xa8, 0xcd, 0x0, 0xc0, 0x4f, 0x68, 0x74, 0x7a);
|
||||
|
||||
typedef struct _USB_BUS_INTERFACE_HUB_V0 {
|
||||
USHORT Size;
|
||||
USHORT Version;
|
||||
PVOID BusContext;
|
||||
PINTERFACE_REFERENCE InterfaceReference;
|
||||
PINTERFACE_DEREFERENCE InterfaceDereference;
|
||||
} USB_BUS_INTERFACE_HUB_V0, *PUSB_BUS_INTERFACE_HUB_V0;
|
||||
|
||||
typedef struct _USB_BUS_INTERFACE_HUB_V1 {
|
||||
USHORT Size;
|
||||
USHORT Version;
|
||||
PVOID BusContext;
|
||||
PINTERFACE_REFERENCE InterfaceReference;
|
||||
PINTERFACE_DEREFERENCE InterfaceDereference;
|
||||
PUSB_BUSIFFN_CREATE_USB_DEVICE CreateUsbDevice;
|
||||
PUSB_BUSIFFN_INITIALIZE_USB_DEVICE InitializeUsbDevice;
|
||||
PUSB_BUSIFFN_GET_USB_DESCRIPTORS GetUsbDescriptors;
|
||||
PUSB_BUSIFFN_REMOVE_USB_DEVICE RemoveUsbDevice;
|
||||
PUSB_BUSIFFN_RESTORE_DEVICE RestoreUsbDevice;
|
||||
PUSB_BUSIFFN_GET_POTRTHACK_FLAGS GetPortHackFlags;
|
||||
PUSB_BUSIFFN_GET_DEVICE_INFORMATION QueryDeviceInformation;
|
||||
} USB_BUS_INTERFACE_HUB_V1, *PUSB_BUS_INTERFACE_HUB_V1;
|
||||
|
||||
typedef struct _USB_BUS_INTERFACE_HUB_V2 {
|
||||
USHORT Size;
|
||||
USHORT Version;
|
||||
PVOID BusContext;
|
||||
PINTERFACE_REFERENCE InterfaceReference;
|
||||
PINTERFACE_DEREFERENCE InterfaceDereference;
|
||||
PUSB_BUSIFFN_CREATE_USB_DEVICE CreateUsbDevice;
|
||||
PUSB_BUSIFFN_INITIALIZE_USB_DEVICE InitializeUsbDevice;
|
||||
PUSB_BUSIFFN_GET_USB_DESCRIPTORS GetUsbDescriptors;
|
||||
PUSB_BUSIFFN_REMOVE_USB_DEVICE RemoveUsbDevice;
|
||||
PUSB_BUSIFFN_RESTORE_DEVICE RestoreUsbDevice;
|
||||
PUSB_BUSIFFN_GET_POTRTHACK_FLAGS GetPortHackFlags;
|
||||
PUSB_BUSIFFN_GET_DEVICE_INFORMATION QueryDeviceInformation;
|
||||
PUSB_BUSIFFN_GET_CONTROLLER_INFORMATION GetControllerInformation;
|
||||
PUSB_BUSIFFN_CONTROLLER_SELECTIVE_SUSPEND ControllerSelectiveSuspend;
|
||||
PUSB_BUSIFFN_GET_EXTENDED_HUB_INFO GetExtendedHubInformation;
|
||||
PUSB_BUSIFFN_GET_ROOTHUB_SYM_NAME GetRootHubSymbolicName;
|
||||
PUSB_BUSIFFN_GET_DEVICE_BUSCONTEXT GetDeviceBusContext;
|
||||
PUSB_BUSIFFN_INITIALIZE_20HUB Initialize20Hub;
|
||||
} USB_BUS_INTERFACE_HUB_V2, *PUSB_BUS_INTERFACE_HUB_V2;
|
||||
|
||||
typedef struct _USB_BUS_INTERFACE_HUB_V3 {
|
||||
USHORT Size;
|
||||
USHORT Version;
|
||||
PVOID BusContext;
|
||||
PINTERFACE_REFERENCE InterfaceReference;
|
||||
PINTERFACE_DEREFERENCE InterfaceDereference;
|
||||
PUSB_BUSIFFN_CREATE_USB_DEVICE CreateUsbDevice;
|
||||
PUSB_BUSIFFN_INITIALIZE_USB_DEVICE InitializeUsbDevice;
|
||||
PUSB_BUSIFFN_GET_USB_DESCRIPTORS GetUsbDescriptors;
|
||||
PUSB_BUSIFFN_REMOVE_USB_DEVICE RemoveUsbDevice;
|
||||
PUSB_BUSIFFN_RESTORE_DEVICE RestoreUsbDevice;
|
||||
PUSB_BUSIFFN_GET_POTRTHACK_FLAGS GetPortHackFlags;
|
||||
PUSB_BUSIFFN_GET_DEVICE_INFORMATION QueryDeviceInformation;
|
||||
PUSB_BUSIFFN_GET_CONTROLLER_INFORMATION GetControllerInformation;
|
||||
PUSB_BUSIFFN_CONTROLLER_SELECTIVE_SUSPEND ControllerSelectiveSuspend;
|
||||
PUSB_BUSIFFN_GET_EXTENDED_HUB_INFO GetExtendedHubInformation;
|
||||
PUSB_BUSIFFN_GET_ROOTHUB_SYM_NAME GetRootHubSymbolicName;
|
||||
PUSB_BUSIFFN_GET_DEVICE_BUSCONTEXT GetDeviceBusContext;
|
||||
PUSB_BUSIFFN_INITIALIZE_20HUB Initialize20Hub;
|
||||
PUSB_BUSIFFN_ROOTHUB_INIT_NOTIFY RootHubInitNotification;
|
||||
} USB_BUS_INTERFACE_HUB_V3, *PUSB_BUS_INTERFACE_HUB_V3;
|
||||
|
||||
typedef struct _USB_BUS_INTERFACE_HUB_V4 {
|
||||
USHORT Size;
|
||||
USHORT Version;
|
||||
PVOID BusContext;
|
||||
PINTERFACE_REFERENCE InterfaceReference;
|
||||
PINTERFACE_DEREFERENCE InterfaceDereference;
|
||||
PUSB_BUSIFFN_CREATE_USB_DEVICE CreateUsbDevice;
|
||||
PUSB_BUSIFFN_INITIALIZE_USB_DEVICE InitializeUsbDevice;
|
||||
PUSB_BUSIFFN_GET_USB_DESCRIPTORS GetUsbDescriptors;
|
||||
PUSB_BUSIFFN_REMOVE_USB_DEVICE RemoveUsbDevice;
|
||||
PUSB_BUSIFFN_RESTORE_DEVICE RestoreUsbDevice;
|
||||
PUSB_BUSIFFN_GET_POTRTHACK_FLAGS GetPortHackFlags;
|
||||
PUSB_BUSIFFN_GET_DEVICE_INFORMATION QueryDeviceInformation;
|
||||
PUSB_BUSIFFN_GET_CONTROLLER_INFORMATION GetControllerInformation;
|
||||
PUSB_BUSIFFN_CONTROLLER_SELECTIVE_SUSPEND ControllerSelectiveSuspend;
|
||||
PUSB_BUSIFFN_GET_EXTENDED_HUB_INFO GetExtendedHubInformation;
|
||||
PUSB_BUSIFFN_GET_ROOTHUB_SYM_NAME GetRootHubSymbolicName;
|
||||
PUSB_BUSIFFN_GET_DEVICE_BUSCONTEXT GetDeviceBusContext;
|
||||
PUSB_BUSIFFN_INITIALIZE_20HUB Initialize20Hub;
|
||||
PUSB_BUSIFFN_ROOTHUB_INIT_NOTIFY RootHubInitNotification;
|
||||
PUSB_BUSIFFN_FLUSH_TRANSFERS FlushTransfers;
|
||||
} USB_BUS_INTERFACE_HUB_V4, *PUSB_BUS_INTERFACE_HUB_V4;
|
||||
|
||||
typedef struct _USB_BUS_INTERFACE_HUB_V5 {
|
||||
USHORT Size;
|
||||
USHORT Version;
|
||||
PVOID BusContext;
|
||||
PINTERFACE_REFERENCE InterfaceReference;
|
||||
PINTERFACE_DEREFERENCE InterfaceDereference;
|
||||
PUSB_BUSIFFN_CREATE_USB_DEVICE CreateUsbDevice;
|
||||
PUSB_BUSIFFN_INITIALIZE_USB_DEVICE InitializeUsbDevice;
|
||||
PUSB_BUSIFFN_GET_USB_DESCRIPTORS GetUsbDescriptors;
|
||||
PUSB_BUSIFFN_REMOVE_USB_DEVICE RemoveUsbDevice;
|
||||
PUSB_BUSIFFN_RESTORE_DEVICE RestoreUsbDevice;
|
||||
PUSB_BUSIFFN_GET_POTRTHACK_FLAGS GetPortHackFlags;
|
||||
PUSB_BUSIFFN_GET_DEVICE_INFORMATION QueryDeviceInformation;
|
||||
PUSB_BUSIFFN_GET_CONTROLLER_INFORMATION GetControllerInformation;
|
||||
PUSB_BUSIFFN_CONTROLLER_SELECTIVE_SUSPEND ControllerSelectiveSuspend;
|
||||
PUSB_BUSIFFN_GET_EXTENDED_HUB_INFO GetExtendedHubInformation;
|
||||
PUSB_BUSIFFN_GET_ROOTHUB_SYM_NAME GetRootHubSymbolicName;
|
||||
PUSB_BUSIFFN_GET_DEVICE_BUSCONTEXT GetDeviceBusContext;
|
||||
PUSB_BUSIFFN_INITIALIZE_20HUB Initialize20Hub;
|
||||
PUSB_BUSIFFN_ROOTHUB_INIT_NOTIFY RootHubInitNotification;
|
||||
PUSB_BUSIFFN_FLUSH_TRANSFERS FlushTransfers;
|
||||
PUSB_BUSIFFN_SET_DEVHANDLE_DATA SetDeviceHandleData;
|
||||
} USB_BUS_INTERFACE_HUB_V5, *PUSB_BUS_INTERFACE_HUB_V5;
|
||||
|
||||
typedef struct _USB_BUS_INTERFACE_HUB_V6 {
|
||||
USHORT Size;
|
||||
USHORT Version;
|
||||
PVOID BusContext;
|
||||
PINTERFACE_REFERENCE InterfaceReference;
|
||||
PINTERFACE_DEREFERENCE InterfaceDereference;
|
||||
PUSB_BUSIFFN_CREATE_USB_DEVICE_EX CreateUsbDevice;
|
||||
PUSB_BUSIFFN_INITIALIZE_USB_DEVICE_EX InitializeUsbDevice;
|
||||
PUSB_BUSIFFN_GET_USB_DESCRIPTORS GetUsbDescriptors;
|
||||
PUSB_BUSIFFN_REMOVE_USB_DEVICE RemoveUsbDevice;
|
||||
PUSB_BUSIFFN_RESTORE_DEVICE RestoreUsbDevice;
|
||||
PUSB_BUSIFFN_GET_POTRTHACK_FLAGS GetPortHackFlags;
|
||||
PUSB_BUSIFFN_GET_DEVICE_INFORMATION QueryDeviceInformation;
|
||||
PUSB_BUSIFFN_GET_CONTROLLER_INFORMATION GetControllerInformation;
|
||||
PUSB_BUSIFFN_CONTROLLER_SELECTIVE_SUSPEND ControllerSelectiveSuspend;
|
||||
PUSB_BUSIFFN_GET_EXTENDED_HUB_INFO GetExtendedHubInformation;
|
||||
PUSB_BUSIFFN_GET_ROOTHUB_SYM_NAME GetRootHubSymbolicName;
|
||||
PUSB_BUSIFFN_GET_DEVICE_BUSCONTEXT GetDeviceBusContext;
|
||||
PUSB_BUSIFFN_INITIALIZE_20HUB Initialize20Hub;
|
||||
PUSB_BUSIFFN_ROOTHUB_INIT_NOTIFY RootHubInitNotification;
|
||||
PUSB_BUSIFFN_FLUSH_TRANSFERS FlushTransfers;
|
||||
PUSB_BUSIFFN_SET_DEVHANDLE_DATA SetDeviceHandleData;
|
||||
PUSB_BUSIFFN_IS_ROOT HubIsRoot;
|
||||
PUSB_BUSIFFN_ACQUIRE_SEMAPHORE AcquireBusSemaphore;
|
||||
PUSB_BUSIFFN_RELEASE_SEMAPHORE ReleaseBusSemaphore;
|
||||
PUSB_BUSIFFN_CALC_PIPE_BANDWIDTH CaculatePipeBandwidth;
|
||||
PUSB_BUSIFFN_SET_BUS_WAKE_MODE SetBusSystemWakeMode;
|
||||
PUSB_BUSIFFN_SET_DEVICE_FLAG SetDeviceFlag;
|
||||
PUSB_BUSIFFN_TEST_POINT HubTestPoint;
|
||||
PUSB_BUSIFFN_GET_DEVICE_PERFORMANCE_INFO GetDevicePerformanceInfo;
|
||||
PUSB_BUSIFFN_WAIT_ASYNC_POWERUP WaitAsyncPowerUp;
|
||||
PUSB_BUSIFFN_GET_DEVICE_ADDRESS GetDeviceAddress;
|
||||
PUSB_BUSIFFN_REF_DEVICE_HANDLE RefDeviceHandle;
|
||||
PUSB_BUSIFFN_DEREF_DEVICE_HANDLE DerefDeviceHandle;
|
||||
PUSB_BUSIFFN_SET_DEVICE_HANDLE_IDLE_READY_STATE SetDeviceHandleIdleReadyState;
|
||||
} USB_BUS_INTERFACE_HUB_V6, *PUSB_BUS_INTERFACE_HUB_V6;
|
||||
|
||||
typedef struct _USB_BUS_INTERFACE_HUB_V7 {
|
||||
USHORT Size;
|
||||
USHORT Version;
|
||||
PVOID BusContext;
|
||||
PINTERFACE_REFERENCE InterfaceReference;
|
||||
PINTERFACE_DEREFERENCE InterfaceDereference;
|
||||
PUSB_BUSIFFN_CREATE_USB_DEVICE_EX CreateUsbDevice;
|
||||
PUSB_BUSIFFN_INITIALIZE_USB_DEVICE_EX InitializeUsbDevice;
|
||||
PUSB_BUSIFFN_GET_USB_DESCRIPTORS GetUsbDescriptors;
|
||||
PUSB_BUSIFFN_REMOVE_USB_DEVICE RemoveUsbDevice;
|
||||
PUSB_BUSIFFN_RESTORE_DEVICE RestoreUsbDevice;
|
||||
PUSB_BUSIFFN_GET_POTRTHACK_FLAGS GetPortHackFlags;
|
||||
PUSB_BUSIFFN_GET_DEVICE_INFORMATION QueryDeviceInformation;
|
||||
PUSB_BUSIFFN_GET_CONTROLLER_INFORMATION GetControllerInformation;
|
||||
PUSB_BUSIFFN_CONTROLLER_SELECTIVE_SUSPEND ControllerSelectiveSuspend;
|
||||
PUSB_BUSIFFN_GET_EXTENDED_HUB_INFO GetExtendedHubInformation;
|
||||
PUSB_BUSIFFN_GET_ROOTHUB_SYM_NAME GetRootHubSymbolicName;
|
||||
PUSB_BUSIFFN_GET_DEVICE_BUSCONTEXT GetDeviceBusContext;
|
||||
PUSB_BUSIFFN_INITIALIZE_20HUB Initialize20Hub;
|
||||
PUSB_BUSIFFN_ROOTHUB_INIT_NOTIFY RootHubInitNotification;
|
||||
PUSB_BUSIFFN_FLUSH_TRANSFERS FlushTransfers;
|
||||
PUSB_BUSIFFN_SET_DEVHANDLE_DATA SetDeviceHandleData;
|
||||
PUSB_BUSIFFN_IS_ROOT HubIsRoot;
|
||||
PUSB_BUSIFFN_ACQUIRE_SEMAPHORE AcquireBusSemaphore;
|
||||
PUSB_BUSIFFN_RELEASE_SEMAPHORE ReleaseBusSemaphore;
|
||||
PUSB_BUSIFFN_CALC_PIPE_BANDWIDTH CaculatePipeBandwidth;
|
||||
PUSB_BUSIFFN_SET_BUS_WAKE_MODE SetBusSystemWakeMode;
|
||||
PUSB_BUSIFFN_SET_DEVICE_FLAG SetDeviceFlag;
|
||||
PUSB_BUSIFFN_TEST_POINT HubTestPoint;
|
||||
PUSB_BUSIFFN_GET_DEVICE_PERFORMANCE_INFO GetDevicePerformanceInfo;
|
||||
PUSB_BUSIFFN_WAIT_ASYNC_POWERUP WaitAsyncPowerUp;
|
||||
PUSB_BUSIFFN_GET_DEVICE_ADDRESS GetDeviceAddress;
|
||||
PUSB_BUSIFFN_REF_DEVICE_HANDLE RefDeviceHandle;
|
||||
PUSB_BUSIFFN_DEREF_DEVICE_HANDLE DerefDeviceHandle;
|
||||
PUSB_BUSIFFN_SET_DEVICE_HANDLE_IDLE_READY_STATE SetDeviceHandleIdleReadyState;
|
||||
PUSB_BUSIFFN_CREATE_USB_DEVICE_V7 CreateUsbDeviceV7;
|
||||
PUSB_BUSIFFN_GET_CONTAINER_ID_FOR_PORT GetContainerIdForPort;
|
||||
PUSB_BUSIFFN_SET_CONTAINER_ID_FOR_PORT SetContainerIdForPort;
|
||||
PUSB_BUSIFFN_ABORT_ALL_DEVICE_PIPES AbortAllDevicePipes;
|
||||
PUSB_BUSIFFN_SET_DEVICE_ERRATA_FLAG SetDeviceErrataFlag;
|
||||
} USB_BUS_INTERFACE_HUB_V7, *PUSB_BUS_INTERFACE_HUB_V7;
|
||||
|
||||
DEFINE_GUID(USB_BUS_INTERFACE_HUB_MINIDUMP_GUID,
|
||||
0xc5485f21, 0x4e81, 0x4a23, 0xa8, 0xf9, 0xd8, 0x51, 0x8a, 0xf4, 0x5c, 0x38);
|
||||
|
||||
typedef VOID
|
||||
(USB_BUSIFFN *PUSB_BUSIFFN_SET_MINIDUMP_FLAGS) (
|
||||
IN PVOID);
|
||||
|
||||
typedef struct _USB_BUS_INTERFACE_HUB_MINIDUMP {
|
||||
USHORT Size;
|
||||
USHORT Version;
|
||||
PVOID BusContext;
|
||||
PINTERFACE_REFERENCE InterfaceReference;
|
||||
PINTERFACE_DEREFERENCE InterfaceDereference;
|
||||
PUSB_BUSIFFN_SET_MINIDUMP_FLAGS SetUsbPortMiniDumpFlags;
|
||||
} USB_BUS_INTERFACE_HUB_MINIDUMP, *PUSB_BUS_INTERFACE_HUB_MINIDUMP;
|
||||
|
||||
DEFINE_GUID(USB_BUS_INTERFACE_HUB_SS_GUID,
|
||||
0xbfc3f363, 0x8ba1, 0x4c7b, 0x97, 0xba, 0x9b, 0x12, 0xb1, 0xca, 0x13, 0x2f);
|
||||
|
||||
typedef NTSTATUS
|
||||
(USB_BUSIFFN *PUSB_BUSIFFN_SUSPEND_HUB) (
|
||||
PDEVICE_OBJECT Pdo);
|
||||
|
||||
typedef NTSTATUS
|
||||
(USB_BUSIFFN *PUSB_BUSIFFN_RESUME_HUB) (
|
||||
PDEVICE_OBJECT Pdo);
|
||||
|
||||
typedef struct _USB_BUS_INTERFACE_HUB_SELECTIVE_SUSPEND {
|
||||
USHORT Size;
|
||||
USHORT Version;
|
||||
PVOID BusContext;
|
||||
PINTERFACE_REFERENCE InterfaceReference;
|
||||
PINTERFACE_DEREFERENCE InterfaceDereference;
|
||||
PUSB_BUSIFFN_SUSPEND_HUB SuspendHub;
|
||||
PUSB_BUSIFFN_RESUME_HUB ResumeHub;
|
||||
} USB_BUS_INTERFACE_HUB_SELECTIVE_SUSPEND, *PUSB_BUS_INTERFACE_HUB_SELECTIVE_SUSPEND;
|
||||
|
||||
#include <pshpack1.h>
|
||||
|
||||
typedef struct _USB_PIPE_INFORMATION_0 {
|
||||
USB_ENDPOINT_DESCRIPTOR EndpointDescriptor;
|
||||
UCHAR ED_Pad[1];
|
||||
ULONG ScheduleOffset;
|
||||
} USB_PIPE_INFORMATION_0, *PUSB_PIPE_INFORMATION_0;
|
||||
|
||||
typedef struct _USB_LEVEL_INFORMATION {
|
||||
ULONG InformationLevel;
|
||||
ULONG ActualLength;
|
||||
} USB_LEVEL_INFORMATION, *PUSB_LEVEL_INFORMATION;
|
||||
|
||||
typedef struct _USB_DEVICE_INFORMATION_0 {
|
||||
ULONG InformationLevel;
|
||||
ULONG ActualLength;
|
||||
ULONG PortNumber;
|
||||
USB_DEVICE_DESCRIPTOR DeviceDescriptor;
|
||||
UCHAR DD_pad[2];
|
||||
UCHAR CurrentConfigurationValue;
|
||||
UCHAR ReservedMBZ;
|
||||
USHORT DeviceAddress;
|
||||
ULONG HubAddress;
|
||||
USB_DEVICE_SPEED DeviceSpeed;
|
||||
USB_DEVICE_TYPE DeviceType;
|
||||
ULONG NumberOfOpenPipes;
|
||||
USB_PIPE_INFORMATION_0 PipeList[1];
|
||||
} USB_DEVICE_INFORMATION_0, *PUSB_DEVICE_INFORMATION_0;
|
||||
|
||||
typedef struct _USB_CONTROLLER_INFORMATION_0 {
|
||||
ULONG InformationLevel;
|
||||
ULONG ActualLength;
|
||||
BOOLEAN SelectiveSuspendEnabled;
|
||||
BOOLEAN IsHighSpeedController;
|
||||
} USB_CONTROLLER_INFORMATION_0, *PUSB_CONTROLLER_INFORMATION_0;
|
||||
|
||||
typedef struct _USB_CONTROLLER_INFORMATION_1 {
|
||||
ULONG InformationLevel;
|
||||
ULONG ActualLength;
|
||||
BOOLEAN SelectiveSuspendEnabled;
|
||||
BOOLEAN IsHighSpeedController;
|
||||
ULONG HcBusNumber;
|
||||
ULONG HcBusDevice;
|
||||
ULONG HcBusFunction;
|
||||
} USB_CONTROLLER_INFORMATION_1, *PUSB_CONTROLLER_INFORMATION_1;
|
||||
|
||||
typedef struct _USB_EXTPORT_INFORMATION_0 {
|
||||
ULONG PhysicalPortNumber;
|
||||
ULONG PortLabelNumber;
|
||||
USHORT VidOverride;
|
||||
USHORT PidOverride;
|
||||
ULONG PortAttributes;
|
||||
} USB_EXTPORT_INFORMATION_0, *PUSB_EXTPORT_INFORMATION;
|
||||
|
||||
typedef struct _USB_EXTHUB_INFORMATION_0 {
|
||||
ULONG InformationLevel;
|
||||
ULONG NumberOfPorts;
|
||||
USB_EXTPORT_INFORMATION_0 Port[255];
|
||||
} USB_EXTHUB_INFORMATION_0, *PUSB_EXTHUB_INFORMATION_0;
|
||||
|
||||
typedef struct _USB_DEVICE_PERFORMANCE_INFO_0 {
|
||||
ULONG InformationLevel;
|
||||
ULONG ActualLength;
|
||||
ULONG BulkBytes;
|
||||
ULONG BulkUrbCount;
|
||||
ULONG ControlDataBytes;
|
||||
ULONG ControlUrbCount;
|
||||
ULONG IsoBytes;
|
||||
ULONG IsoUrbCount;
|
||||
ULONG InterruptBytes;
|
||||
ULONG InterruptUrbCount;
|
||||
ULONG AllocedInterrupt[6];
|
||||
ULONG AllocedIso;
|
||||
ULONG Total32secBandwidth;
|
||||
ULONG TotalTtBandwidth;
|
||||
ULONG TotalIsoLatency;
|
||||
ULONG DroppedIsoPackets;
|
||||
ULONG TransferErrors;
|
||||
} USB_DEVICE_PERFORMANCE_INFO_0, *PUSB_DEVICE_PERFORMANCE_INFO_0;
|
||||
|
||||
#include <poppack.h>
|
||||
|
||||
#endif
|
193
include/ddk/usbbusif.h
Normal file
193
include/ddk/usbbusif.h
Normal file
|
@ -0,0 +1,193 @@
|
|||
#pragma once
|
||||
|
||||
#ifndef USB_BUSIFFN
|
||||
#define USB_BUSIFFN __stdcall
|
||||
#endif
|
||||
|
||||
#if (NTDDI_VERSION >= NTDDI_WINXP)
|
||||
|
||||
typedef PVOID PUSB_DEVICE_HANDLE;
|
||||
|
||||
typedef NTSTATUS
|
||||
(USB_BUSIFFN *PUSB_BUSIFFN_SUBMIT_ISO_OUT_URB) (
|
||||
IN PVOID,
|
||||
IN PURB);
|
||||
|
||||
#define USB_HCD_CAPS_SUPPORTS_RT_THREADS 0x00000001
|
||||
|
||||
typedef VOID
|
||||
(USB_BUSIFFN *PUSB_BUSIFFN_GETUSBDI_VERSION) (
|
||||
IN PVOID,
|
||||
OUT PUSBD_VERSION_INFORMATION,
|
||||
OUT PULONG);
|
||||
|
||||
typedef NTSTATUS
|
||||
(USB_BUSIFFN *PUSB_BUSIFFN_QUERY_BUS_TIME) (
|
||||
IN PVOID,
|
||||
OUT PULONG);
|
||||
|
||||
typedef NTSTATUS
|
||||
(USB_BUSIFFN *PUSB_BUSIFFN_ENUM_LOG_ENTRY) (
|
||||
IN PVOID,
|
||||
IN ULONG,
|
||||
IN ULONG,
|
||||
IN ULONG,
|
||||
IN ULONG);
|
||||
|
||||
typedef struct _USB_BUS_INFORMATION_LEVEL_0 {
|
||||
ULONG TotalBandwidth;
|
||||
ULONG ConsumedBandwidth;
|
||||
} USB_BUS_INFORMATION_LEVEL_0, *PUSB_BUS_INFORMATION_LEVEL_0;
|
||||
|
||||
typedef struct _USB_BUS_INFORMATION_LEVEL_1 {
|
||||
ULONG TotalBandwidth;
|
||||
ULONG ConsumedBandwidth;
|
||||
ULONG ControllerNameLength;
|
||||
WCHAR ControllerNameUnicodeString[1];
|
||||
} USB_BUS_INFORMATION_LEVEL_1, *PUSB_BUS_INFORMATION_LEVEL_1;
|
||||
|
||||
typedef NTSTATUS
|
||||
(USB_BUSIFFN *PUSB_BUSIFFN_QUERY_BUS_INFORMATION) (
|
||||
IN PVOID,
|
||||
IN ULONG,
|
||||
INout PVOID,
|
||||
OUT PULONG,
|
||||
OUT PULONG);
|
||||
|
||||
typedef BOOLEAN
|
||||
(USB_BUSIFFN *PUSB_BUSIFFN_IS_DEVICE_HIGH_SPEED) (
|
||||
IN PVOID);
|
||||
|
||||
#define USB_BUSIF_USBDI_VERSION_0 0x0000
|
||||
#define USB_BUSIF_USBDI_VERSION_1 0x0001
|
||||
#define USB_BUSIF_USBDI_VERSION_2 0x0002
|
||||
#define USB_BUSIF_USBDI_VERSION_3 0x0003
|
||||
|
||||
DEFINE_GUID(USB_BUS_INTERFACE_USBDI_GUID,
|
||||
0xb1a96a13, 0x3de0, 0x4574, 0x9b, 0x1, 0xc0, 0x8f, 0xea, 0xb3, 0x18, 0xd6);
|
||||
|
||||
typedef struct _USB_BUS_INTERFACE_USBDI_V0 {
|
||||
USHORT Size;
|
||||
USHORT Version;
|
||||
PVOID BusContext;
|
||||
PINTERFACE_REFERENCE InterfaceReference;
|
||||
PINTERFACE_DEREFERENCE InterfaceDereference;
|
||||
PUSB_BUSIFFN_GETUSBDI_VERSION GetUSBDIVersion;
|
||||
PUSB_BUSIFFN_QUERY_BUS_TIME QueryBusTime;
|
||||
PUSB_BUSIFFN_SUBMIT_ISO_OUT_URB SubmitIsoOutUrb;
|
||||
PUSB_BUSIFFN_QUERY_BUS_INFORMATION QueryBusInformation;
|
||||
} USB_BUS_INTERFACE_USBDI_V0, *PUSB_BUS_INTERFACE_USBDI_V0;
|
||||
|
||||
typedef struct _USB_BUS_INTERFACE_USBDI_V1 {
|
||||
USHORT Size;
|
||||
USHORT Version;
|
||||
PVOID BusContext;
|
||||
PINTERFACE_REFERENCE InterfaceReference;
|
||||
PINTERFACE_DEREFERENCE InterfaceDereference;
|
||||
PUSB_BUSIFFN_GETUSBDI_VERSION GetUSBDIVersion;
|
||||
PUSB_BUSIFFN_QUERY_BUS_TIME QueryBusTime;
|
||||
PUSB_BUSIFFN_SUBMIT_ISO_OUT_URB SubmitIsoOutUrb;
|
||||
PUSB_BUSIFFN_QUERY_BUS_INFORMATION QueryBusInformation;
|
||||
PUSB_BUSIFFN_IS_DEVICE_HIGH_SPEED IsDeviceHighSpeed;
|
||||
} USB_BUS_INTERFACE_USBDI_V1, *PUSB_BUS_INTERFACE_USBDI_V1;
|
||||
|
||||
typedef struct _USB_BUS_INTERFACE_USBDI_V2 {
|
||||
USHORT Size;
|
||||
USHORT Version;
|
||||
PVOID BusContext;
|
||||
PINTERFACE_REFERENCE InterfaceReference;
|
||||
PINTERFACE_DEREFERENCE InterfaceDereference;
|
||||
PUSB_BUSIFFN_GETUSBDI_VERSION GetUSBDIVersion;
|
||||
PUSB_BUSIFFN_QUERY_BUS_TIME QueryBusTime;
|
||||
PUSB_BUSIFFN_SUBMIT_ISO_OUT_URB SubmitIsoOutUrb;
|
||||
PUSB_BUSIFFN_QUERY_BUS_INFORMATION QueryBusInformation;
|
||||
PUSB_BUSIFFN_IS_DEVICE_HIGH_SPEED IsDeviceHighSpeed;
|
||||
PUSB_BUSIFFN_ENUM_LOG_ENTRY EnumLogEntry;
|
||||
} USB_BUS_INTERFACE_USBDI_V2, *PUSB_BUS_INTERFACE_USBDI_V2;
|
||||
|
||||
#endif
|
||||
|
||||
#if (NTDDI_VERSION >= NTDDI_VISTA)
|
||||
|
||||
typedef NTSTATUS
|
||||
(USB_BUSIFFN *PUSB_BUSIFFN_QUERY_BUS_TIME_EX) (
|
||||
IN PVOID,
|
||||
OUT PULONG);
|
||||
|
||||
typedef NTSTATUS
|
||||
(USB_BUSIFFN *PUSB_BUSIFFN_QUERY_CONTROLLER_TYPE) (
|
||||
IN PVOID,
|
||||
OUT PULONG,
|
||||
OUT PUSHORT,
|
||||
OUT PUSHORT,
|
||||
OUT PUCHAR,
|
||||
OUT PUCHAR,
|
||||
OUT PUCHAR,
|
||||
OUT PUCHAR);
|
||||
|
||||
typedef struct _USB_BUS_INTERFACE_USBDI_V3 {
|
||||
USHORT Size;
|
||||
USHORT Version;
|
||||
PVOID BusContext;
|
||||
PINTERFACE_REFERENCE InterfaceReference;
|
||||
PINTERFACE_DEREFERENCE InterfaceDereference;
|
||||
PUSB_BUSIFFN_GETUSBDI_VERSION GetUSBDIVersion;
|
||||
PUSB_BUSIFFN_QUERY_BUS_TIME QueryBusTime;
|
||||
PUSB_BUSIFFN_SUBMIT_ISO_OUT_URB SubmitIsoOutUrb;
|
||||
PUSB_BUSIFFN_QUERY_BUS_INFORMATION QueryBusInformation;
|
||||
PUSB_BUSIFFN_IS_DEVICE_HIGH_SPEED IsDeviceHighSpeed;
|
||||
PUSB_BUSIFFN_ENUM_LOG_ENTRY EnumLogEntry;
|
||||
PUSB_BUSIFFN_QUERY_BUS_TIME_EX QueryBusTimeEx;
|
||||
PUSB_BUSIFFN_QUERY_CONTROLLER_TYPE QueryControllerType;
|
||||
} USB_BUS_INTERFACE_USBDI_V3, *PUSB_BUS_INTERFACE_USBDI_V3;
|
||||
|
||||
DEFINE_GUID(USB_BUS_INTERFACE_USBC_CONFIGURATION_GUID,
|
||||
0x893b6a96, 0xb7f, 0x4d4d, 0xbd, 0xb4, 0xbb, 0xd4, 0xce, 0xeb, 0xb3, 0x1c);
|
||||
|
||||
#define USBC_FUNCTION_FLAG_APPEND_ID 0x1
|
||||
|
||||
typedef struct _USBC_FUNCTION_DESCRIPTOR{
|
||||
UCHAR FunctionNumber;
|
||||
UCHAR NumberOfInterfaces;
|
||||
PUSB_INTERFACE_DESCRIPTOR *InterfaceDescriptorList;
|
||||
UNICODE_STRING HardwareId;
|
||||
UNICODE_STRING CompatibleId;
|
||||
UNICODE_STRING FunctionDescription;
|
||||
ULONG FunctionFlags;
|
||||
PVOID Reserved;
|
||||
} USBC_FUNCTION_DESCRIPTOR, *PUSBC_FUNCTION_DESCRIPTOR;
|
||||
|
||||
typedef
|
||||
NTSTATUS
|
||||
(USB_BUSIFFN *USBC_START_DEVICE_CALLBACK)(
|
||||
IN PUSB_DEVICE_DESCRIPTOR DeviceDescriptor,
|
||||
IN PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor,
|
||||
PUSBC_FUNCTION_DESCRIPTOR *FunctionDescriptorBuffer,
|
||||
OUT PULONG FunctionDescriptorBufferLength,
|
||||
IN PDEVICE_OBJECT FdoDeviceObject,
|
||||
IN PDEVICE_OBJECT PdoDeviceObject);
|
||||
|
||||
typedef
|
||||
BOOLEAN
|
||||
(USB_BUSIFFN *USBC_PDO_ENABLE_CALLBACK)(
|
||||
IN PVOID Context,
|
||||
IN USHORT FirstInterfaceNumber,
|
||||
IN USHORT NumberOfInterfaces,
|
||||
IN UCHAR FunctionClass,
|
||||
IN UCHAR FunctionSubClass,
|
||||
IN UCHAR FunctionProtocol);
|
||||
|
||||
#define USBC_DEVICE_CONFIGURATION_INTERFACE_VERSION_1 0x0001
|
||||
|
||||
typedef struct _USBC_DEVICE_CONFIGURATION_INTERFACE_V1 {
|
||||
USHORT Size;
|
||||
USHORT Version;
|
||||
PVOID Context;
|
||||
PINTERFACE_REFERENCE InterfaceReference;
|
||||
PINTERFACE_DEREFERENCE InterfaceDereference;
|
||||
USBC_START_DEVICE_CALLBACK StartDeviceCallback;
|
||||
USBC_PDO_ENABLE_CALLBACK PdoEnableCallback;
|
||||
PVOID Reserved[7];
|
||||
} USBC_DEVICE_CONFIGURATION_INTERFACE_V1, *PUSBC_DEVICE_CONFIGURATION_INTERFACE_V1;
|
||||
|
||||
#endif
|
9
include/ddk/usbdrivr.h
Normal file
9
include/ddk/usbdrivr.h
Normal file
|
@ -0,0 +1,9 @@
|
|||
#pragma once
|
||||
|
||||
#define USB_KERNEL_IOCTL
|
||||
#include "usbioctl.h"
|
||||
#undef USB_KERNEL_IOCTL
|
||||
|
||||
#include "usb.h"
|
||||
#include "usbdlib.h"
|
||||
#include "usbbusif.h"
|
Loading…
Reference in a new issue