mirror of
https://github.com/reactos/reactos.git
synced 2024-08-01 09:01:13 +00:00
More work on USB related definitions
svn path=/branches/header-work/; revision=45863
This commit is contained in:
parent
a7ffadade2
commit
97e7fd6cb6
|
@ -1,348 +0,0 @@
|
|||
/*
|
||||
* usbioctl.h
|
||||
*
|
||||
* USB IOCTL interface.
|
||||
*
|
||||
* This file is part of the w32api package.
|
||||
*
|
||||
* Contributors:
|
||||
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __USBIOCTL_H
|
||||
#define __USBIOCTL_H
|
||||
|
||||
#include "usb100.h"
|
||||
#include "usbiodef.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define USBD_PORT_ENABLED 1
|
||||
#define USBD_PORT_CONNECTED 2
|
||||
|
||||
#define IOCTL_INTERNAL_USB_CYCLE_PORT \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_CYCLE_PORT, METHOD_NEITHER, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_INTERNAL_USB_ENABLE_PORT \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_ENABLE_PORT, METHOD_NEITHER, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_INTERNAL_USB_GET_BUS_INFO \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_BUS_INFO, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_INTERNAL_USB_GET_BUSGUID_INFO \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_BUSGUID_INFO, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_INTERNAL_USB_GET_CONTROLLER_NAME \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_CONTROLLER_NAME, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_INTERNAL_USB_GET_DEVICE_HANDLE \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_DEVICE_HANDLE, METHOD_NEITHER, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_INTERNAL_USB_GET_HUB_COUNT \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_HUB_COUNT, METHOD_NEITHER, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_INTERNAL_USB_GET_HUB_NAME \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_HUB_NAME, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_INTERNAL_USB_GET_PARENT_HUB_INFO \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_PARENT_HUB_INFO, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_INTERNAL_USB_GET_PORT_STATUS \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_PORT_STATUS, METHOD_NEITHER, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_INTERNAL_USB_RESET_PORT \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_RESET_PORT, METHOD_NEITHER, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_INTERNAL_USB_GET_ROOTHUB_PDO \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_ROOTHUB_PDO, METHOD_NEITHER, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_INTERNAL_USB_SUBMIT_IDLE_NOTIFICATION \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_IDLE_NOTIFICATION, METHOD_NEITHER, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_INTERNAL_USB_SUBMIT_URB \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_SUBMIT_URB, METHOD_NEITHER, FILE_ANY_ACCESS)
|
||||
|
||||
|
||||
#define IOCTL_USB_DIAG_IGNORE_HUBS_ON \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_DIAG_IGNORE_HUBS_ON, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_USB_DIAG_IGNORE_HUBS_OFF \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_DIAG_IGNORE_HUBS_OFF, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_USB_DIAGNOSTIC_MODE_OFF \
|
||||
CTL_CODE(FILE_DEVICE_USB, HCD_DIAGNOSTIC_MODE_OFF, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_USB_DIAGNOSTIC_MODE_ON \
|
||||
CTL_CODE(FILE_DEVICE_USB, HCD_DIAGNOSTIC_MODE_ON, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_USB_GET_HUB_CAPABILITIES \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_HUB_CAPABILITIES, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_USB_GET_ROOT_HUB_NAME \
|
||||
CTL_CODE(FILE_DEVICE_USB, HCD_GET_ROOT_HUB_NAME, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_GET_HCD_DRIVERKEY_NAME \
|
||||
CTL_CODE(FILE_DEVICE_USB, HCD_GET_DRIVERKEY_NAME, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_USB_GET_NODE_INFORMATION \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_NODE_INFORMATION, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_USB_GET_NODE_CONNECTION_INFORMATION \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_NODE_CONNECTION_INFORMATION, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_USB_GET_NODE_CONNECTION_ATTRIBUTES \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_NODE_CONNECTION_ATTRIBUTES, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_USB_GET_NODE_CONNECTION_NAME \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_NODE_CONNECTION_NAME, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_USB_GET_NODE_CONNECTION_DRIVERKEY_NAME \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_NODE_CONNECTION_DRIVERKEY_NAME, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_USB_HCD_DISABLE_PORT \
|
||||
CTL_CODE(FILE_DEVICE_USB, HCD_DISABLE_PORT, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_USB_HCD_ENABLE_PORT \
|
||||
CTL_CODE(FILE_DEVICE_USB, HCD_ENABLE_PORT, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_USB_HCD_GET_STATS_1 \
|
||||
CTL_CODE(FILE_DEVICE_USB, HCD_GET_STATS_1, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_USB_HCD_GET_STATS_2 \
|
||||
CTL_CODE(FILE_DEVICE_USB, HCD_GET_STATS_2, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
|
||||
typedef struct _USB_HUB_CAPABILITIES {
|
||||
ULONG HubIs2xCapable : 1;
|
||||
} USB_HUB_CAPABILITIES, *PUSB_HUB_CAPABILITIES;
|
||||
|
||||
typedef enum _USB_CONNECTION_STATUS {
|
||||
NoDeviceConnected,
|
||||
DeviceConnected,
|
||||
DeviceFailedEnumeration,
|
||||
DeviceGeneralFailure,
|
||||
DeviceCausedOvercurrent,
|
||||
DeviceNotEnoughPower,
|
||||
DeviceNotEnoughBandwidth,
|
||||
DeviceHubNestedTooDeeply,
|
||||
DeviceInLegacyHub
|
||||
} USB_CONNECTION_STATUS, *PUSB_CONNECTION_STATUS;
|
||||
|
||||
#include <pshpack1.h>
|
||||
|
||||
typedef struct _USB_DESCRIPTOR_REQUEST {
|
||||
ULONG ConnectionIndex;
|
||||
struct {
|
||||
UCHAR bmRequest;
|
||||
UCHAR bRequest;
|
||||
USHORT wValue;
|
||||
USHORT wIndex;
|
||||
USHORT wLength;
|
||||
} SetupPacket;
|
||||
UCHAR Data[0];
|
||||
} USB_DESCRIPTOR_REQUEST, *PUSB_DESCRIPTOR_REQUEST;
|
||||
|
||||
typedef struct _USB_HCD_DRIVERKEY_NAME {
|
||||
ULONG ActualLength;
|
||||
WCHAR DriverKeyName[1];
|
||||
} USB_HCD_DRIVERKEY_NAME, *PUSB_HCD_DRIVERKEY_NAME;
|
||||
|
||||
typedef struct _HCD_ISO_STAT_COUNTERS {
|
||||
USHORT LateUrbs;
|
||||
USHORT DoubleBufferedPackets;
|
||||
USHORT TransfersCF_5ms;
|
||||
USHORT TransfersCF_2ms;
|
||||
USHORT TransfersCF_1ms;
|
||||
USHORT MaxInterruptLatency;
|
||||
USHORT BadStartFrame;
|
||||
USHORT StaleUrbs;
|
||||
USHORT IsoPacketNotAccesed;
|
||||
USHORT IsoPacketHWError;
|
||||
USHORT SmallestUrbPacketCount;
|
||||
USHORT LargestUrbPacketCount;
|
||||
USHORT IsoCRC_Error;
|
||||
USHORT IsoOVERRUN_Error;
|
||||
USHORT IsoINTERNAL_Error;
|
||||
USHORT IsoUNKNOWN_Error;
|
||||
ULONG IsoBytesTransferred;
|
||||
USHORT LateMissedCount;
|
||||
USHORT HWIsoMissedCount;
|
||||
ULONG Reserved7[8];
|
||||
} HCD_ISO_STAT_COUNTERS, *PHCD_ISO_STAT_COUNTERS;
|
||||
|
||||
typedef struct _HCD_STAT_COUNTERS {
|
||||
ULONG BytesTransferred;
|
||||
USHORT IsoMissedCount;
|
||||
USHORT DataOverrunErrorCount;
|
||||
USHORT CrcErrorCount;
|
||||
USHORT ScheduleOverrunCount;
|
||||
USHORT TimeoutErrorCount;
|
||||
USHORT InternalHcErrorCount;
|
||||
USHORT BufferOverrunErrorCount;
|
||||
USHORT SWErrorCount;
|
||||
USHORT StallPidCount;
|
||||
USHORT PortDisableCount;
|
||||
} HCD_STAT_COUNTERS, *PHCD_STAT_COUNTERS;
|
||||
|
||||
typedef struct _HCD_STAT_INFORMATION_1 {
|
||||
ULONG Reserved1;
|
||||
ULONG Reserved2;
|
||||
ULONG ResetCounters;
|
||||
LARGE_INTEGER TimeRead;
|
||||
HCD_STAT_COUNTERS Counters;
|
||||
} HCD_STAT_INFORMATION_1, *PHCD_STAT_INFORMATION_1;
|
||||
|
||||
typedef struct _HCD_STAT_INFORMATION_2 {
|
||||
ULONG Reserved1;
|
||||
ULONG Reserved2;
|
||||
ULONG ResetCounters;
|
||||
LARGE_INTEGER TimeRead;
|
||||
LONG LockedMemoryUsed;
|
||||
HCD_STAT_COUNTERS Counters;
|
||||
HCD_ISO_STAT_COUNTERS IsoCounters;
|
||||
} HCD_STAT_INFORMATION_2, *PHCD_STAT_INFORMATION_2;
|
||||
|
||||
typedef struct _USB_HUB_INFORMATION {
|
||||
USB_HUB_DESCRIPTOR HubDescriptor;
|
||||
BOOLEAN HubIsBusPowered;
|
||||
} USB_HUB_INFORMATION, *PUSB_HUB_INFORMATION;
|
||||
|
||||
typedef struct _USB_HUB_NAME {
|
||||
ULONG ActualLength;
|
||||
WCHAR HubName[1];
|
||||
} USB_HUB_NAME, *PUSB_HUB_NAME;
|
||||
|
||||
typedef enum _USB_HUB_NODE {
|
||||
UsbHub,
|
||||
UsbMIParent
|
||||
} USB_HUB_NODE;
|
||||
|
||||
typedef VOID NTAPI
|
||||
(*USB_IDLE_CALLBACK)(
|
||||
PVOID Context);
|
||||
|
||||
typedef struct _USB_IDLE_CALLBACK_INFO {
|
||||
USB_IDLE_CALLBACK IdleCallback;
|
||||
PVOID IdleContext;
|
||||
} USB_IDLE_CALLBACK_INFO, *PUSB_IDLE_CALLBACK_INFO;
|
||||
|
||||
typedef struct _USB_NODE_CONNECTION_ATTRIBUTES {
|
||||
ULONG ConnectionIndex;
|
||||
USB_CONNECTION_STATUS ConnectionStatus;
|
||||
ULONG PortAttributes;
|
||||
} USB_NODE_CONNECTION_ATTRIBUTES, *PUSB_NODE_CONNECTION_ATTRIBUTES;
|
||||
|
||||
typedef struct _USB_NODE_CONNECTION_DRIVERKEY_NAME {
|
||||
ULONG ConnectionIndex;
|
||||
ULONG ActualLength;
|
||||
WCHAR DriverKeyName[1];
|
||||
} USB_NODE_CONNECTION_DRIVERKEY_NAME, *PUSB_NODE_CONNECTION_DRIVERKEY_NAME;
|
||||
|
||||
typedef struct _USB_PIPE_INFO {
|
||||
USB_ENDPOINT_DESCRIPTOR EndpointDescriptor;
|
||||
ULONG ScheduleOffset;
|
||||
} USB_PIPE_INFO, *PUSB_PIPE_INFO;
|
||||
|
||||
typedef struct _USB_NODE_CONNECTION_INFORMATION {
|
||||
ULONG ConnectionIndex;
|
||||
USB_DEVICE_DESCRIPTOR DeviceDescriptor;
|
||||
UCHAR CurrentConfigurationValue;
|
||||
BOOLEAN LowSpeed;
|
||||
BOOLEAN DeviceIsHub;
|
||||
USHORT DeviceAddress;
|
||||
ULONG NumberOfOpenPipes;
|
||||
USB_CONNECTION_STATUS ConnectionStatus;
|
||||
USB_PIPE_INFO PipeList[0];
|
||||
} USB_NODE_CONNECTION_INFORMATION, *PUSB_NODE_CONNECTION_INFORMATION;
|
||||
|
||||
typedef struct _USB_NODE_CONNECTION_NAME {
|
||||
ULONG ConnectionIndex;
|
||||
ULONG ActualLength;
|
||||
WCHAR NodeName[1];
|
||||
} USB_NODE_CONNECTION_NAME, *PUSB_NODE_CONNECTION_NAME;
|
||||
|
||||
typedef struct _USB_MI_PARENT_INFORMATION {
|
||||
ULONG NumberOfInterfaces;
|
||||
} USB_MI_PARENT_INFORMATION, *PUSB_MI_PARENT_INFORMATION;
|
||||
|
||||
typedef struct _USB_NODE_INFORMATION {
|
||||
USB_HUB_NODE NodeType;
|
||||
union {
|
||||
USB_HUB_INFORMATION HubInformation;
|
||||
USB_MI_PARENT_INFORMATION MiParentInformation;
|
||||
} u;
|
||||
} USB_NODE_INFORMATION, *PUSB_NODE_INFORMATION;
|
||||
|
||||
#define WMI_USB_DRIVER_INFORMATION 0
|
||||
#define WMI_USB_DRIVER_NOTIFICATION 1
|
||||
#define WMI_USB_POWER_DEVICE_ENABLE 2
|
||||
|
||||
typedef enum _USB_NOTIFICATION_TYPE {
|
||||
EnumerationFailure = 0,
|
||||
InsufficentBandwidth,
|
||||
InsufficentPower,
|
||||
OverCurrent,
|
||||
ResetOvercurrent,
|
||||
AcquireBusInfo,
|
||||
AcquireHubName,
|
||||
AcquireControllerName,
|
||||
HubOvercurrent,
|
||||
HubPowerChange,
|
||||
HubNestedTooDeeply,
|
||||
ModernDeviceInLegacyHub
|
||||
} USB_NOTIFICATION_TYPE;
|
||||
|
||||
typedef struct _USB_ACQUIRE_INFO {
|
||||
USB_NOTIFICATION_TYPE NotificationType;
|
||||
ULONG TotalSize;
|
||||
WCHAR Buffer[1];
|
||||
} USB_ACQUIRE_INFO, *PUSB_ACQUIRE_INFO;
|
||||
|
||||
typedef struct _USB_NOTIFICATION {
|
||||
USB_NOTIFICATION_TYPE NotificationType;
|
||||
} USB_NOTIFICATION, *PUSB_NOTIFICATION;
|
||||
|
||||
typedef struct _USB_BUS_NOTIFICATION {
|
||||
USB_NOTIFICATION_TYPE NotificationType;
|
||||
ULONG TotalBandwidth;
|
||||
ULONG ConsumedBandwidth;
|
||||
ULONG ControllerNameLength;
|
||||
} USB_BUS_NOTIFICATION, *PUSB_BUS_NOTIFICATION;
|
||||
|
||||
typedef struct _USB_CONNECTION_NOTIFICATION {
|
||||
USB_NOTIFICATION_TYPE NotificationType;
|
||||
ULONG ConnectionNumber;
|
||||
ULONG RequestedBandwidth;
|
||||
ULONG EnumerationFailReason;
|
||||
ULONG PowerRequested;
|
||||
ULONG HubNameLength;
|
||||
} USB_CONNECTION_NOTIFICATION, *PUSB_CONNECTION_NOTIFICATION;
|
||||
|
||||
typedef struct _USB_ROOT_HUB_NAME {
|
||||
ULONG ActualLength;
|
||||
WCHAR RootHubName[1];
|
||||
} USB_ROOT_HUB_NAME, *PUSB_ROOT_HUB_NAME;
|
||||
|
||||
#include <poppack.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __USBIOCTL_H */
|
670
include/psdk/usbioctl.h
Normal file
670
include/psdk/usbioctl.h
Normal file
|
@ -0,0 +1,670 @@
|
|||
/*
|
||||
* usbioctl.h
|
||||
*
|
||||
* USB IOCTL interface.
|
||||
*
|
||||
* This file is part of the w32api package.
|
||||
*
|
||||
* Contributors:
|
||||
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
|
||||
*
|
||||
* 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 "usb100.h"
|
||||
#include "usbiodef.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define IOCTL_INTERNAL_USB_SUBMIT_URB \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_SUBMIT_URB, METHOD_NEITHER, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_INTERNAL_USB_RESET_PORT \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_RESET_PORT, METHOD_NEITHER, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_INTERNAL_USB_GET_ROOTHUB_PDO \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_ROOTHUB_PDO, METHOD_NEITHER, FILE_ANY_ACCESS)
|
||||
|
||||
#define USBD_PORT_ENABLED 1
|
||||
#define USBD_PORT_CONNECTED 2
|
||||
|
||||
#define IOCTL_INTERNAL_USB_GET_PORT_STATUS \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_PORT_STATUS, METHOD_NEITHER, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_INTERNAL_USB_ENABLE_PORT \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_ENABLE_PORT, METHOD_NEITHER, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_INTERNAL_USB_GET_HUB_COUNT \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_HUB_COUNT, METHOD_NEITHER, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_INTERNAL_USB_CYCLE_PORT \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_CYCLE_PORT, METHOD_NEITHER, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_INTERNAL_USB_GET_HUB_NAME \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_HUB_NAME, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_INTERNAL_USB_GET_BUS_INFO \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_BUS_INFO, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_INTERNAL_USB_GET_CONTROLLER_NAME \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_CONTROLLER_NAME, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_INTERNAL_USB_GET_BUSGUID_INFO \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_BUSGUID_INFO, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_INTERNAL_USB_GET_PARENT_HUB_INFO \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_PARENT_HUB_INFO, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#if (_WIN32_WINNT >= 0x0501)
|
||||
|
||||
#define IOCTL_INTERNAL_USB_SUBMIT_IDLE_NOTIFICATION \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_IDLE_NOTIFICATION, METHOD_NEITHER, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_INTERNAL_USB_GET_DEVICE_HANDLE \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_DEVICE_HANDLE, METHOD_NEITHER, FILE_ANY_ACCESS)
|
||||
|
||||
#endif
|
||||
|
||||
#if (_WIN32_WINNT >= 0x0600)
|
||||
|
||||
#define IOCTL_INTERNAL_USB_NOTIFY_IDLE_READY \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_IDLE_NOTIFICATION_EX, METHOD_NEITHER, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_INTERNAL_USB_REQ_GLOBAL_SUSPEND \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_REQ_GLOBAL_SUSPEND, METHOD_NEITHER, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_INTERNAL_USB_REQ_GLOBAL_RESUME \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_REQ_GLOBAL_RESUME, METHOD_NEITHER, FILE_ANY_ACCESS)
|
||||
|
||||
#ifdef USB20_API
|
||||
typedef struct _USB_START_FAILDATA {
|
||||
ULONG LengthInBytes;
|
||||
NTSTATUS NtStatus;
|
||||
USBD_STATUS UsbdStatus;
|
||||
ULONG ConnectStatus;
|
||||
UCHAR DriverData[4];
|
||||
} USB_START_FAILDATA, *PUSB_START_FAILDATA;
|
||||
#endif
|
||||
|
||||
#define IOCTL_INTERNAL_USB_RECORD_FAILURE \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_RECORD_FAILURE, METHOD_NEITHER, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_INTERNAL_USB_GET_DEVICE_HANDLE_EX \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_DEVICE_HANDLE_EX, METHOD_NEITHER, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_INTERNAL_USB_GET_TT_DEVICE_HANDLE \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_TT_DEVICE_HANDLE, METHOD_NEITHER, FILE_ANY_ACCESS)
|
||||
|
||||
typedef struct _USB_TOPOLOGY_ADDRESS {
|
||||
ULONG PciBusNumber;
|
||||
ULONG PciDeviceNumber;
|
||||
ULONG PciFunctionNumber;
|
||||
ULONG Reserved;
|
||||
USHORT RootHubPortNumber;
|
||||
USHORT HubPortNumber[5];
|
||||
USHORT Reserved2;
|
||||
} USB_TOPOLOGY_ADDRESS, *PUSB_TOPOLOGY_ADDRESS;
|
||||
|
||||
#define IOCTL_INTERNAL_USB_GET_TOPOLOGY_ADDRESS \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_TOPOLOGY_ADDRESS, METHOD_NEITHER, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_INTERNAL_USB_GET_DEVICE_CONFIG_INFO \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_HUB_CONFIG_INFO, METHOD_NEITHER, FILE_ANY_ACCESS)
|
||||
|
||||
#endif
|
||||
|
||||
#ifndef USB_KERNEL_IOCTL
|
||||
|
||||
#define IOCTL_USB_HCD_GET_STATS_1 \
|
||||
CTL_CODE(FILE_DEVICE_USB, HCD_GET_STATS_1, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_USB_HCD_GET_STATS_2 \
|
||||
CTL_CODE(FILE_DEVICE_USB, HCD_GET_STATS_2, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_USB_HCD_DISABLE_PORT \
|
||||
CTL_CODE(FILE_DEVICE_USB, HCD_DISABLE_PORT, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_USB_HCD_ENABLE_PORT \
|
||||
CTL_CODE(FILE_DEVICE_USB, HCD_ENABLE_PORT, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_USB_HCD_DISABLE_PORT \
|
||||
CTL_CODE(FILE_DEVICE_USB, HCD_DISABLE_PORT, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_USB_HCD_ENABLE_PORT \
|
||||
CTL_CODE(FILE_DEVICE_USB, HCD_ENABLE_PORT, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#ifndef IOCTL_USB_DIAGNOSTIC_MODE_OFF
|
||||
#define IOCTL_USB_DIAGNOSTIC_MODE_OFF \
|
||||
CTL_CODE(FILE_DEVICE_USB, HCD_DIAGNOSTIC_MODE_OFF, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
#endif
|
||||
|
||||
#ifndef IOCTL_USB_DIAGNOSTIC_MODE_ON
|
||||
#define IOCTL_USB_DIAGNOSTIC_MODE_ON \
|
||||
CTL_CODE(FILE_DEVICE_USB, HCD_DIAGNOSTIC_MODE_ON, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
#endif
|
||||
|
||||
#ifndef IOCTL_USB_GET_ROOT_HUB_NAME
|
||||
#define IOCTL_USB_GET_ROOT_HUB_NAME \
|
||||
CTL_CODE(FILE_DEVICE_USB, HCD_GET_ROOT_HUB_NAME, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
#endif
|
||||
|
||||
#ifndef IOCTL_GET_HCD_DRIVERKEY_NAME
|
||||
#define IOCTL_GET_HCD_DRIVERKEY_NAME \
|
||||
CTL_CODE(FILE_DEVICE_USB, HCD_GET_DRIVERKEY_NAME, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
#endif
|
||||
|
||||
#define IOCTL_USB_GET_NODE_INFORMATION \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_NODE_INFORMATION, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_USB_GET_NODE_CONNECTION_INFORMATION \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_NODE_CONNECTION_INFORMATION, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_USB_GET_NODE_CONNECTION_NAME \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_NODE_CONNECTION_NAME, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_USB_DIAG_IGNORE_HUBS_ON \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_DIAG_IGNORE_HUBS_ON, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_USB_DIAG_IGNORE_HUBS_OFF \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_DIAG_IGNORE_HUBS_OFF, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_USB_GET_NODE_CONNECTION_DRIVERKEY_NAME \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_NODE_CONNECTION_DRIVERKEY_NAME, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#if (_WIN32_WINNT >= 0x0501)
|
||||
|
||||
#define IOCTL_USB_GET_HUB_CAPABILITIES \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_HUB_CAPABILITIES, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_USB_HUB_CYCLE_PORT \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_HUB_CYCLE_PORT, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_USB_GET_NODE_CONNECTION_ATTRIBUTES \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_NODE_CONNECTION_ATTRIBUTES, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_NODE_CONNECTION_INFORMATION_EX, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#endif
|
||||
|
||||
#if (_WIN32_WINNT >= 0x0600)
|
||||
|
||||
#define IOCTL_USB_RESET_HUB \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_RESET_HUB, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_USB_GET_HUB_CAPABILITIES_EX \
|
||||
CTL_CODE(FILE_DEVICE_USB, USB_GET_HUB_CAPABILITIES_EX, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#endif
|
||||
|
||||
#include <pshpack1.h>
|
||||
|
||||
typedef enum _USB_HUB_NODE {
|
||||
UsbHub,
|
||||
UsbMIParent
|
||||
} USB_HUB_NODE;
|
||||
|
||||
typedef struct _USB_HUB_INFORMATION {
|
||||
USB_HUB_DESCRIPTOR HubDescriptor;
|
||||
BOOLEAN HubIsBusPowered;
|
||||
} USB_HUB_INFORMATION, *PUSB_HUB_INFORMATION;
|
||||
|
||||
typedef struct _USB_MI_PARENT_INFORMATION {
|
||||
ULONG NumberOfInterfaces;
|
||||
} USB_MI_PARENT_INFORMATION, *PUSB_MI_PARENT_INFORMATION;
|
||||
|
||||
typedef struct _USB_NODE_INFORMATION {
|
||||
USB_HUB_NODE NodeType;
|
||||
union {
|
||||
USB_HUB_INFORMATION HubInformation;
|
||||
USB_MI_PARENT_INFORMATION MiParentInformation;
|
||||
} u;
|
||||
} USB_NODE_INFORMATION, *PUSB_NODE_INFORMATION;
|
||||
|
||||
typedef struct _USB_PIPE_INFO {
|
||||
USB_ENDPOINT_DESCRIPTOR EndpointDescriptor;
|
||||
ULONG ScheduleOffset;
|
||||
} USB_PIPE_INFO, *PUSB_PIPE_INFO;
|
||||
|
||||
#if (_WIN32_WINNT >= 0x0600)
|
||||
|
||||
typedef enum _USB_CONNECTION_STATUS {
|
||||
NoDeviceConnected,
|
||||
DeviceConnected,
|
||||
DeviceFailedEnumeration,
|
||||
DeviceGeneralFailure,
|
||||
DeviceCausedOvercurrent,
|
||||
DeviceNotEnoughPower,
|
||||
DeviceNotEnoughBandwidth,
|
||||
DeviceHubNestedTooDeeply,
|
||||
DeviceInLegacyHub,
|
||||
DeviceEnumerating,
|
||||
DeviceReset
|
||||
} USB_CONNECTION_STATUS, *PUSB_CONNECTION_STATUS;
|
||||
|
||||
#elif (_WIN32_WINNT >= 0x0501)
|
||||
|
||||
typedef enum _USB_CONNECTION_STATUS {
|
||||
NoDeviceConnected,
|
||||
DeviceConnected,
|
||||
DeviceFailedEnumeration,
|
||||
DeviceGeneralFailure,
|
||||
DeviceCausedOvercurrent,
|
||||
DeviceNotEnoughPower,
|
||||
DeviceNotEnoughBandwidth,
|
||||
DeviceHubNestedTooDeeply,
|
||||
DeviceInLegacyHub
|
||||
} USB_CONNECTION_STATUS, *PUSB_CONNECTION_STATUS;
|
||||
|
||||
#else
|
||||
|
||||
typedef enum _USB_CONNECTION_STATUS {
|
||||
NoDeviceConnected,
|
||||
DeviceConnected,
|
||||
DeviceFailedEnumeration,
|
||||
DeviceGeneralFailure,
|
||||
DeviceCausedOvercurrent,
|
||||
DeviceNotEnoughPower,
|
||||
DeviceNotEnoughBandwidth
|
||||
} USB_CONNECTION_STATUS, *PUSB_CONNECTION_STATUS;
|
||||
|
||||
#endif
|
||||
|
||||
typedef struct _USB_NODE_CONNECTION_INFORMATION {
|
||||
ULONG ConnectionIndex;
|
||||
USB_DEVICE_DESCRIPTOR DeviceDescriptor;
|
||||
UCHAR CurrentConfigurationValue;
|
||||
BOOLEAN LowSpeed;
|
||||
BOOLEAN DeviceIsHub;
|
||||
USHORT DeviceAddress;
|
||||
ULONG NumberOfOpenPipes;
|
||||
USB_CONNECTION_STATUS ConnectionStatus;
|
||||
USB_PIPE_INFO PipeList[0];
|
||||
} USB_NODE_CONNECTION_INFORMATION, *PUSB_NODE_CONNECTION_INFORMATION;
|
||||
|
||||
typedef struct _USB_NODE_CONNECTION_DRIVERKEY_NAME {
|
||||
ULONG ConnectionIndex;
|
||||
ULONG ActualLength;
|
||||
WCHAR DriverKeyName[1];
|
||||
} USB_NODE_CONNECTION_DRIVERKEY_NAME, *PUSB_NODE_CONNECTION_DRIVERKEY_NAME;
|
||||
|
||||
typedef struct _USB_NODE_CONNECTION_NAME {
|
||||
ULONG ConnectionIndex;
|
||||
ULONG ActualLength;
|
||||
WCHAR NodeName[1];
|
||||
} USB_NODE_CONNECTION_NAME, *PUSB_NODE_CONNECTION_NAME;
|
||||
|
||||
typedef struct _USB_HUB_NAME {
|
||||
ULONG ActualLength;
|
||||
WCHAR HubName[1];
|
||||
} USB_HUB_NAME, *PUSB_HUB_NAME;
|
||||
|
||||
typedef struct _USB_ROOT_HUB_NAME {
|
||||
ULONG ActualLength;
|
||||
WCHAR RootHubName[1];
|
||||
} USB_ROOT_HUB_NAME, *PUSB_ROOT_HUB_NAME;
|
||||
|
||||
typedef struct _USB_HCD_DRIVERKEY_NAME {
|
||||
ULONG ActualLength;
|
||||
WCHAR DriverKeyName[1];
|
||||
} USB_HCD_DRIVERKEY_NAME, *PUSB_HCD_DRIVERKEY_NAME;
|
||||
|
||||
typedef struct _USB_DESCRIPTOR_REQUEST {
|
||||
ULONG ConnectionIndex;
|
||||
struct {
|
||||
UCHAR bmRequest;
|
||||
UCHAR bRequest;
|
||||
USHORT wValue;
|
||||
USHORT wIndex;
|
||||
USHORT wLength;
|
||||
} SetupPacket;
|
||||
UCHAR Data[0];
|
||||
} USB_DESCRIPTOR_REQUEST, *PUSB_DESCRIPTOR_REQUEST;
|
||||
|
||||
#if (_WIN32_WINNT >= 0x0501)
|
||||
|
||||
typedef struct _USB_HUB_CAPABILITIES {
|
||||
ULONG HubIs2xCapable:1;
|
||||
} USB_HUB_CAPABILITIES, *PUSB_HUB_CAPABILITIES;
|
||||
|
||||
typedef struct _USB_NODE_CONNECTION_ATTRIBUTES {
|
||||
ULONG ConnectionIndex;
|
||||
USB_CONNECTION_STATUS ConnectionStatus;
|
||||
ULONG PortAttributes;
|
||||
} USB_NODE_CONNECTION_ATTRIBUTES, *PUSB_NODE_CONNECTION_ATTRIBUTES;
|
||||
|
||||
typedef struct _USB_NODE_CONNECTION_INFORMATION_EX {
|
||||
ULONG ConnectionIndex;
|
||||
USB_DEVICE_DESCRIPTOR DeviceDescriptor;
|
||||
UCHAR CurrentConfigurationValue;
|
||||
UCHAR Speed;
|
||||
BOOLEAN DeviceIsHub;
|
||||
USHORT DeviceAddress;
|
||||
ULONG NumberOfOpenPipes;
|
||||
USB_CONNECTION_STATUS ConnectionStatus;
|
||||
USB_PIPE_INFO PipeList[0];
|
||||
} USB_NODE_CONNECTION_INFORMATION_EX, *PUSB_NODE_CONNECTION_INFORMATION_EX;
|
||||
|
||||
C_ASSERT(sizeof(USB_NODE_CONNECTION_INFORMATION_EX) == sizeof(USB_NODE_CONNECTION_INFORMATION));
|
||||
|
||||
#endif
|
||||
|
||||
#if (_WIN32_WINNT >= 0x0600)
|
||||
|
||||
typedef union _USB_HUB_CAP_FLAGS {
|
||||
ULONG ul;
|
||||
struct {
|
||||
ULONG HubIsHighSpeedCapable:1;
|
||||
ULONG HubIsHighSpeed:1;
|
||||
ULONG HubIsMultiTtCapable:1;
|
||||
ULONG HubIsMultiTt:1;
|
||||
ULONG HubIsRoot:1;
|
||||
ULONG HubIsArmedWakeOnConnect:1;
|
||||
ULONG HubIsBusPowered:1;
|
||||
ULONG ReservedMBZ:25;
|
||||
};
|
||||
} USB_HUB_CAP_FLAGS, *PUSB_HUB_CAP_FLAGS;
|
||||
|
||||
C_ASSERT(sizeof(USB_HUB_CAP_FLAGS) == sizeof(ULONG));
|
||||
|
||||
typedef struct _USB_HUB_CAPABILITIES_EX {
|
||||
USB_HUB_CAP_FLAGS CapabilityFlags;
|
||||
} USB_HUB_CAPABILITIES_EX, *PUSB_HUB_CAPABILITIES_EX;
|
||||
|
||||
typedef struct _USB_CYCLE_PORT_PARAMS {
|
||||
ULONG ConnectionIndex;
|
||||
ULONG StatusReturned;
|
||||
} USB_CYCLE_PORT_PARAMS, *PUSB_CYCLE_PORT_PARAMS;
|
||||
|
||||
typedef struct _USB_ID_STRING {
|
||||
USHORT LanguageId;
|
||||
USHORT Pad;
|
||||
ULONG LengthInBytes;
|
||||
PWCHAR Buffer;
|
||||
} USB_ID_STRING, *PUSB_ID_STRING;
|
||||
|
||||
typedef struct _USB_HUB_DEVICE_UXD_SETTINGS {
|
||||
ULONG Version;
|
||||
GUID PnpGuid;
|
||||
GUID OwnerGuid;
|
||||
ULONG DeleteOnShutdown;
|
||||
ULONG DeleteOnReload;
|
||||
ULONG DeleteOnDisconnect;
|
||||
ULONG Reserved[5];
|
||||
} USB_HUB_DEVICE_UXD_SETTINGS, *PUSB_HUB_DEVICE_UXD_SETTINGS;
|
||||
|
||||
typedef struct _HUB_DEVICE_CONFIG_INFO_V1 {
|
||||
ULONG Version;
|
||||
ULONG Length;
|
||||
USB_HUB_CAP_FLAGS HubFlags;
|
||||
USB_ID_STRING HardwareIds;
|
||||
USB_ID_STRING CompatibleIds;
|
||||
USB_ID_STRING DeviceDescription;
|
||||
ULONG Reserved[19];
|
||||
USB_HUB_DEVICE_UXD_SETTINGS UxdSettings;
|
||||
} HUB_DEVICE_CONFIG_INFO, *PHUB_DEVICE_CONFIG_INFO;
|
||||
|
||||
#endif
|
||||
|
||||
typedef struct _HCD_ISO_STAT_COUNTERS {
|
||||
USHORT LateUrbs;
|
||||
USHORT DoubleBufferedPackets;
|
||||
USHORT TransfersCF_5ms;
|
||||
USHORT TransfersCF_2ms;
|
||||
USHORT TransfersCF_1ms;
|
||||
USHORT MaxInterruptLatency;
|
||||
USHORT BadStartFrame;
|
||||
USHORT StaleUrbs;
|
||||
USHORT IsoPacketNotAccesed;
|
||||
USHORT IsoPacketHWError;
|
||||
USHORT SmallestUrbPacketCount;
|
||||
USHORT LargestUrbPacketCount;
|
||||
USHORT IsoCRC_Error;
|
||||
USHORT IsoOVERRUN_Error;
|
||||
USHORT IsoINTERNAL_Error;
|
||||
USHORT IsoUNKNOWN_Error;
|
||||
ULONG IsoBytesTransferred;
|
||||
USHORT LateMissedCount;
|
||||
USHORT HWIsoMissedCount;
|
||||
ULONG Reserved7[8];
|
||||
} HCD_ISO_STAT_COUNTERS, *PHCD_ISO_STAT_COUNTERS;
|
||||
|
||||
typedef struct _HCD_STAT_COUNTERS {
|
||||
ULONG BytesTransferred;
|
||||
USHORT IsoMissedCount;
|
||||
USHORT DataOverrunErrorCount;
|
||||
USHORT CrcErrorCount;
|
||||
USHORT ScheduleOverrunCount;
|
||||
USHORT TimeoutErrorCount;
|
||||
USHORT InternalHcErrorCount;
|
||||
USHORT BufferOverrunErrorCount;
|
||||
USHORT SWErrorCount;
|
||||
USHORT StallPidCount;
|
||||
USHORT PortDisableCount;
|
||||
} HCD_STAT_COUNTERS, *PHCD_STAT_COUNTERS;
|
||||
|
||||
typedef struct _HCD_STAT_INFORMATION_1 {
|
||||
ULONG Reserved1;
|
||||
ULONG Reserved2;
|
||||
ULONG ResetCounters;
|
||||
LARGE_INTEGER TimeRead;
|
||||
HCD_STAT_COUNTERS Counters;
|
||||
} HCD_STAT_INFORMATION_1, *PHCD_STAT_INFORMATION_1;
|
||||
|
||||
typedef struct _HCD_STAT_INFORMATION_2 {
|
||||
ULONG Reserved1;
|
||||
ULONG Reserved2;
|
||||
ULONG ResetCounters;
|
||||
LARGE_INTEGER TimeRead;
|
||||
LONG LockedMemoryUsed;
|
||||
HCD_STAT_COUNTERS Counters;
|
||||
HCD_ISO_STAT_COUNTERS IsoCounters;
|
||||
} HCD_STAT_INFORMATION_2, *PHCD_STAT_INFORMATION_2;
|
||||
|
||||
#define WMI_USB_DRIVER_INFORMATION 0
|
||||
#define WMI_USB_DRIVER_NOTIFICATION 1
|
||||
#define WMI_USB_POWER_DEVICE_ENABLE 2
|
||||
#define WMI_USB_HUB_NODE_INFORMATION 4
|
||||
|
||||
#define WMI_USB_PERFORMANCE_INFORMATION 1
|
||||
#define WMI_USB_DEVICE_NODE_INFORMATION 2
|
||||
|
||||
#if (_WIN32_WINNT >= 0x0501)
|
||||
|
||||
typedef enum _USB_NOTIFICATION_TYPE {
|
||||
EnumerationFailure = 0,
|
||||
InsufficentBandwidth,
|
||||
InsufficentPower,
|
||||
OverCurrent,
|
||||
ResetOvercurrent,
|
||||
AcquireBusInfo,
|
||||
AcquireHubName,
|
||||
AcquireControllerName,
|
||||
HubOvercurrent,
|
||||
HubPowerChange,
|
||||
HubNestedTooDeeply,
|
||||
ModernDeviceInLegacyHub
|
||||
} USB_NOTIFICATION_TYPE;
|
||||
|
||||
#else
|
||||
|
||||
typedef enum _USB_NOTIFICATION_TYPE {
|
||||
EnumerationFailure = 0,
|
||||
InsufficentBandwidth,
|
||||
InsufficentPower,
|
||||
OverCurrent,
|
||||
ResetOvercurrent,
|
||||
AcquireBusInfo,
|
||||
AcquireHubName,
|
||||
AcquireControllerName,
|
||||
HubOvercurrent,
|
||||
HubPowerChange
|
||||
} USB_NOTIFICATION_TYPE;
|
||||
|
||||
#endif
|
||||
|
||||
typedef struct _USB_NOTIFICATION {
|
||||
USB_NOTIFICATION_TYPE NotificationType;
|
||||
} USB_NOTIFICATION, *PUSB_NOTIFICATION;
|
||||
|
||||
typedef struct _USB_CONNECTION_NOTIFICATION {
|
||||
USB_NOTIFICATION_TYPE NotificationType;
|
||||
ULONG ConnectionNumber;
|
||||
ULONG RequestedBandwidth;
|
||||
ULONG EnumerationFailReason;
|
||||
ULONG PowerRequested;
|
||||
ULONG HubNameLength;
|
||||
} USB_CONNECTION_NOTIFICATION, *PUSB_CONNECTION_NOTIFICATION;
|
||||
|
||||
typedef struct _USB_BUS_NOTIFICATION {
|
||||
USB_NOTIFICATION_TYPE NotificationType;
|
||||
ULONG TotalBandwidth;
|
||||
ULONG ConsumedBandwidth;
|
||||
ULONG ControllerNameLength;
|
||||
} USB_BUS_NOTIFICATION, *PUSB_BUS_NOTIFICATION;
|
||||
|
||||
typedef struct _USB_ACQUIRE_INFO {
|
||||
USB_NOTIFICATION_TYPE NotificationType;
|
||||
ULONG TotalSize;
|
||||
WCHAR Buffer[1];
|
||||
} USB_ACQUIRE_INFO, *PUSB_ACQUIRE_INFO;
|
||||
|
||||
#if (_WIN32_WINNT >= 0x0600)
|
||||
|
||||
#define USB_NODE_INFO_SIG 'USBN'
|
||||
|
||||
typedef enum _USB_WMI_DEVICE_NODE_TYPE {
|
||||
UsbDevice,
|
||||
HubDevice,
|
||||
CompositeDevice,
|
||||
UsbController
|
||||
} USB_WMI_DEVICE_NODE_TYPE, *PUSB_WMI_DEVICE_NODE_TYPE;
|
||||
|
||||
typedef struct _USB_DEVICE_STATE {
|
||||
ULONG DeviceConnected:1;
|
||||
ULONG DeviceStarted:1;
|
||||
} USB_DEVICE_STATE, *PUSB_DEVICE_STATE;
|
||||
|
||||
typedef struct _USB_HUB_PORT_INFORMATION {
|
||||
USB_DEVICE_STATE DeviceState;
|
||||
USHORT PortNumber;
|
||||
USHORT DeviceAddress;
|
||||
ULONG ConnectionIndex;
|
||||
USB_CONNECTION_STATUS ConnectionStatus;
|
||||
} USB_HUB_PORT_INFORMATION, *PUSB_HUB_PORT_INFORMATION;
|
||||
|
||||
typedef struct _USB_HUB_DEVICE_INFO {
|
||||
USB_HUB_DESCRIPTOR HubDescriptor;
|
||||
ULONG HubNumber;
|
||||
USHORT DeviceAddress;
|
||||
BOOLEAN HubIsSelfPowered;
|
||||
BOOLEAN HubIsRootHub;
|
||||
USB_HUB_CAPABILITIES HubCapabilities;
|
||||
ULONG NumberOfHubPorts;
|
||||
USB_HUB_PORT_INFORMATION PortInfo[1];
|
||||
} USB_HUB_DEVICE_INFO, *PUSB_HUB_DEVICE_INFO;
|
||||
|
||||
typedef struct _USB_COMPOSITE_FUNCTION_INFO {
|
||||
UCHAR FunctionNumber;
|
||||
UCHAR BaseInterfaceNumber;
|
||||
UCHAR NumberOfInterfaces;
|
||||
BOOLEAN FunctionIsIdle;
|
||||
} USB_COMPOSITE_FUNCTION_INFO, *PUSB_COMPOSITE_FUNCTION_INFO;
|
||||
|
||||
typedef struct _USB_COMPOSITE_DEVICE_INFO {
|
||||
USB_DEVICE_DESCRIPTOR DeviceDescriptor;
|
||||
USB_CONFIGURATION_DESCRIPTOR CurrentConfigDescriptor;
|
||||
UCHAR CurrentConfigurationValue;
|
||||
UCHAR NumberOfFunctions;
|
||||
USB_COMPOSITE_FUNCTION_INFO FunctionInfo[1];
|
||||
} USB_COMPOSITE_DEVICE_INFO, *PUSB_COMPOSITE_DEVICE_INFO;
|
||||
|
||||
typedef struct _USB_CONTROLLER_DEVICE_INFO {
|
||||
ULONG PciVendorId;
|
||||
ULONG PciDeviceId;
|
||||
ULONG PciRevision;
|
||||
ULONG NumberOfRootPorts;
|
||||
ULONG HcFeatureFlags;
|
||||
} USB_CONTROLLER_DEVICE_INFO, *PUSB_CONTROLLER_DEVICE_INFO;
|
||||
|
||||
typedef struct _USB_DEVICE_INFO {
|
||||
USB_DEVICE_STATE DeviceState;
|
||||
USHORT PortNumber;
|
||||
USB_DEVICE_DESCRIPTOR DeviceDescriptor;
|
||||
UCHAR CurrentConfigurationValue;
|
||||
USB_DEVICE_SPEED Speed;
|
||||
USHORT DeviceAddress;
|
||||
ULONG ConnectionIndex;
|
||||
USB_CONNECTION_STATUS ConnectionStatus;
|
||||
WCHAR PnpHardwareId[128];
|
||||
WCHAR PnpCompatibleId[128];
|
||||
WCHAR SerialNumberId[128];
|
||||
WCHAR PnpDeviceDescription[128];
|
||||
ULONG NumberOfOpenPipes;
|
||||
USB_PIPE_INFO PipeList[1];
|
||||
} USB_DEVICE_INFO, *PUSB_DEVICE_INFO;
|
||||
|
||||
typedef struct _USB_DEVICE_NODE_INFO {
|
||||
ULONG Sig;
|
||||
ULONG LengthInBytes;
|
||||
WCHAR DeviceDescription[40];
|
||||
USB_WMI_DEVICE_NODE_TYPE NodeType;
|
||||
USB_TOPOLOGY_ADDRESS BusAddress;
|
||||
union{
|
||||
USB_DEVICE_INFO UsbDeviceInfo;
|
||||
USB_HUB_DEVICE_INFO HubDeviceInfo;
|
||||
USB_COMPOSITE_DEVICE_INFO CompositeDeviceInfo;
|
||||
USB_CONTROLLER_DEVICE_INFO ControllerDeviceInfo;
|
||||
UCHAR DeviceInformation[4];
|
||||
};
|
||||
} USB_DEVICE_NODE_INFO, *PUSB_DEVICE_NODE_INFO;
|
||||
|
||||
typedef struct _USB_DEVICE_PERFORMANCE_INFO {
|
||||
ULONG BulkBytes;
|
||||
ULONG ControlDataBytes;
|
||||
ULONG IsoBytes;
|
||||
ULONG InterruptBytes;
|
||||
ULONG BulkUrbCount;
|
||||
ULONG ControlUrbCount;
|
||||
ULONG IsoUrbCount;
|
||||
ULONG InterruptUrbCount;
|
||||
ULONG AllocedInterrupt[6];
|
||||
ULONG AllocedIso;
|
||||
ULONG Total32secBandwidth;
|
||||
ULONG TotalTtBandwidth;
|
||||
WCHAR DeviceDescription[60];
|
||||
USB_DEVICE_SPEED DeviceSpeed;
|
||||
ULONG TotalIsoLatency;
|
||||
ULONG DroppedIsoPackets;
|
||||
ULONG TransferErrors;
|
||||
ULONG PciInterruptCount;
|
||||
ULONG HcIdleState;
|
||||
ULONG HcAsyncIdleState;
|
||||
ULONG HcAsyncCacheFlushCount;
|
||||
ULONG HcPeriodicIdleState;
|
||||
ULONG HcPeriodicCacheFlushCount;
|
||||
} USB_DEVICE_PERFORMANCE_INFO, *PUSB_DEVICE_PERFORMANCE_INFO;
|
||||
|
||||
#endif
|
||||
|
||||
#include <poppack.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
Loading…
Reference in a new issue