7 #if (NTDDI_VERSION >= NTDDI_WINXP)
9 #if !defined(_USBBUSIF_)
10 typedef PVOID PUSB_DEVICE_HANDLE
;
13 typedef struct _ROOTHUB_PDO_EXTENSION
{
15 } ROOTHUB_PDO_EXTENSION
, *PROOTHUB_PDO_EXTENSION
;
17 #define USBD_DEVHACK_SLOW_ENUMERATION 0x00000001
18 #define USBD_DEVHACK_DISABLE_SN 0x00000002
19 #define USBD_DEVHACK_SET_DIAG_ID 0x00000004
22 #define USB_BUSIFFN __stdcall
25 #define CD_ERR_V1 0x00000001
27 #define ID_ERR_V1 0x00000001
29 #define USBD_KEEP_DEVICE_DATA 0x00000001
30 #define USBD_MARK_DEVICE_BUSY 0x00000002
32 #define USB_IDLE_NOT_READY 0
33 #define USB_IDLE_READY 1
38 USB_BUSIFFN_CREATE_USB_DEVICE (
40 OUT PUSB_DEVICE_HANDLE
*NewDeviceHandle
,
41 IN PUSB_DEVICE_HANDLE HubDeviceHandle
,
43 IN USHORT PortNumber
);
45 typedef USB_BUSIFFN_CREATE_USB_DEVICE
*PUSB_BUSIFFN_CREATE_USB_DEVICE
;
47 typedef enum _USBPORT_CREATEDEV_ERROR
{
48 CreateDevErrNotSet
= 0,
49 CreateDevBadHubDevHandle
,
50 CreateDevFailedAllocDevHandle
,
51 CreateDevFailedOpenEndpoint
,
52 CreateDevFailedAllocDsBuff
,
55 CreateDevBadDevHandlePtr
56 } USBPORT_CREATEDEV_ERROR
;
58 typedef struct _USB_CD_ERROR_INFORMATION
{
60 USBPORT_CREATEDEV_ERROR PathError
;
65 } USB_CD_ERROR_INFORMATION
, *PUSB_CD_ERROR_INFORMATION
;
70 USB_BUSIFFN_CREATE_USB_DEVICE_EX (
72 OUT PUSB_DEVICE_HANDLE
*NewDeviceHandle
,
73 IN PUSB_DEVICE_HANDLE HsHubDeviceHandle
,
76 OUT PUSB_CD_ERROR_INFORMATION CdErrorInfo
,
77 IN USHORT TtPortNumber
);
79 typedef USB_BUSIFFN_CREATE_USB_DEVICE_EX
*PUSB_BUSIFFN_CREATE_USB_DEVICE_EX
;
81 typedef struct _USB_PORT_PATH
{
84 } USB_PORT_PATH
, *PUSB_PORT_PATH
;
89 USB_BUSIFFN_CREATE_USB_DEVICE_V7 (
91 OUT PUSB_DEVICE_HANDLE
*NewDeviceHandle
,
92 IN PUSB_DEVICE_HANDLE HsHubDeviceHandle
,
94 IN PUSB_PORT_PATH PortPath
,
95 OUT PUSB_CD_ERROR_INFORMATION CdErrorInfo
,
96 IN USHORT TtPortNumber
,
97 IN PDEVICE_OBJECT PdoDeviceObject
,
98 IN PUNICODE_STRING PhysicalDeviceObjectName
);
100 typedef USB_BUSIFFN_CREATE_USB_DEVICE_V7
*PUSB_BUSIFFN_CREATE_USB_DEVICE_V7
;
102 typedef enum _USBPORT_INITDEV_ERROR
{
103 InitDevErrNotSet
= 0,
104 InitDevFailedSetAddress
,
105 InitDevFailedPokeEndpoint
,
106 InitDevBadDeviceDescriptor
107 } USBPORT_INITDEV_ERROR
;
109 typedef struct _USB_ID_ERROR_INFORMATION
{
111 USBPORT_INITDEV_ERROR PathError
;
115 USBD_STATUS UsbdStatus
;
117 } USB_ID_ERROR_INFORMATION
, *PUSB_ID_ERROR_INFORMATION
;
122 USB_BUSIFFN_INITIALIZE_USB_DEVICE (
124 IN OUT PUSB_DEVICE_HANDLE DeviceHandle
);
126 typedef USB_BUSIFFN_INITIALIZE_USB_DEVICE
*PUSB_BUSIFFN_INITIALIZE_USB_DEVICE
;
131 USB_BUSIFFN_INITIALIZE_USB_DEVICE_EX (
133 IN OUT PUSB_DEVICE_HANDLE DeviceHandle
,
134 OUT PUSB_ID_ERROR_INFORMATION IdErrInfo
);
136 typedef USB_BUSIFFN_INITIALIZE_USB_DEVICE_EX
*PUSB_BUSIFFN_INITIALIZE_USB_DEVICE_EX
;
141 USB_BUSIFFN_REMOVE_USB_DEVICE (
143 IN OUT PUSB_DEVICE_HANDLE DeviceHandle
,
146 typedef USB_BUSIFFN_REMOVE_USB_DEVICE
*PUSB_BUSIFFN_REMOVE_USB_DEVICE
;
151 USB_BUSIFFN_GET_USB_DESCRIPTORS (
153 IN OUT PUSB_DEVICE_HANDLE DeviceHandle
,
154 OUT PUCHAR DeviceDescriptorBuffer
,
155 IN OUT PULONG DeviceDescriptorBufferLength
,
156 OUT PUCHAR ConfigDescriptorBuffer
,
157 IN OUT PULONG ConfigDescriptorBufferLength
);
159 typedef USB_BUSIFFN_GET_USB_DESCRIPTORS
*PUSB_BUSIFFN_GET_USB_DESCRIPTORS
;
164 USB_BUSIFFN_RESTORE_DEVICE (
166 IN OUT PUSB_DEVICE_HANDLE OldDeviceHandle
,
167 IN OUT PUSB_DEVICE_HANDLE NewDeviceHandle
);
169 typedef USB_BUSIFFN_RESTORE_DEVICE
*PUSB_BUSIFFN_RESTORE_DEVICE
;
174 USB_BUSIFFN_GET_POTRTHACK_FLAGS (
176 IN OUT PULONG Flags
);
178 typedef USB_BUSIFFN_GET_POTRTHACK_FLAGS
*PUSB_BUSIFFN_GET_POTRTHACK_FLAGS
;
183 USB_BUSIFFN_GET_DEVICE_INFORMATION (
185 IN PUSB_DEVICE_HANDLE DeviceHandle
,
186 OUT PVOID DeviceInformationBuffer
,
187 IN ULONG DeviceInformationBufferLength
,
188 IN OUT PULONG LengthOfDataCopied
);
190 typedef USB_BUSIFFN_GET_DEVICE_INFORMATION
*PUSB_BUSIFFN_GET_DEVICE_INFORMATION
;
195 USB_BUSIFFN_GET_CONTROLLER_INFORMATION (
197 IN OUT PVOID ControllerInformationBuffer
,
198 IN ULONG ControllerInformationBufferLength
,
199 IN OUT PULONG LengthOfDataCopied
);
201 typedef USB_BUSIFFN_GET_CONTROLLER_INFORMATION
*PUSB_BUSIFFN_GET_CONTROLLER_INFORMATION
;
206 USB_BUSIFFN_CONTROLLER_SELECTIVE_SUSPEND (
210 typedef USB_BUSIFFN_CONTROLLER_SELECTIVE_SUSPEND
*PUSB_BUSIFFN_CONTROLLER_SELECTIVE_SUSPEND
;
215 USB_BUSIFFN_GET_EXTENDED_HUB_INFO (
217 IN PDEVICE_OBJECT HubPhysicalDeviceObject
,
218 IN PVOID HubInformationBuffer
,
219 IN ULONG HubInformationBufferLength
,
220 OUT PULONG LengthOfDataCopied
);
222 typedef USB_BUSIFFN_GET_EXTENDED_HUB_INFO
*PUSB_BUSIFFN_GET_EXTENDED_HUB_INFO
;
227 USB_BUSIFFN_GET_ROOTHUB_SYM_NAME (
229 IN PVOID HubSymNameBuffer
,
230 IN ULONG HubSymNameBufferLength
,
231 OUT PULONG HubSymNameActualLength
);
233 typedef USB_BUSIFFN_GET_ROOTHUB_SYM_NAME
*PUSB_BUSIFFN_GET_ROOTHUB_SYM_NAME
;
238 USB_BUSIFFN_GET_DEVICE_BUSCONTEXT (
239 IN PVOID HubBusContext
,
240 IN PVOID DeviceHandle
);
242 typedef USB_BUSIFFN_GET_DEVICE_BUSCONTEXT
*PUSB_BUSIFFN_GET_DEVICE_BUSCONTEXT
;
247 USB_BUSIFFN_INITIALIZE_20HUB (
249 IN PUSB_DEVICE_HANDLE HubDeviceHandle
,
252 typedef USB_BUSIFFN_INITIALIZE_20HUB
*PUSB_BUSIFFN_INITIALIZE_20HUB
;
257 USB_BUSIFFN_IS_ROOT (
259 IN PVOID DeviceObject
);
261 typedef USB_BUSIFFN_IS_ROOT
*PUSB_BUSIFFN_IS_ROOT
;
266 USB_BUSIFFN_ACQUIRE_SEMAPHORE (
267 IN PVOID BusContext
);
269 typedef USB_BUSIFFN_ACQUIRE_SEMAPHORE
*PUSB_BUSIFFN_ACQUIRE_SEMAPHORE
;
274 USB_BUSIFFN_RELEASE_SEMAPHORE (
275 IN PVOID BusContext
);
277 typedef USB_BUSIFFN_RELEASE_SEMAPHORE
*PUSB_BUSIFFN_RELEASE_SEMAPHORE
;
283 IN PVOID CallBackContext
);
285 typedef RH_INIT_CALLBACK
*PRH_INIT_CALLBACK
;
290 USB_BUSIFFN_ROOTHUB_INIT_NOTIFY (
292 IN PVOID CallbackContext
,
293 IN PRH_INIT_CALLBACK CallbackRoutine
);
295 typedef USB_BUSIFFN_ROOTHUB_INIT_NOTIFY
*PUSB_BUSIFFN_ROOTHUB_INIT_NOTIFY
;
300 USB_BUSIFFN_FLUSH_TRANSFERS (
302 IN PVOID DeviceHandle
);
304 typedef USB_BUSIFFN_FLUSH_TRANSFERS
*PUSB_BUSIFFN_FLUSH_TRANSFERS
;
309 USB_BUSIFFN_CALC_PIPE_BANDWIDTH (
311 IN PUSBD_PIPE_INFORMATION PipeInfo
,
312 IN USB_DEVICE_SPEED DeviceSpeed
);
314 typedef USB_BUSIFFN_CALC_PIPE_BANDWIDTH
*PUSB_BUSIFFN_CALC_PIPE_BANDWIDTH
;
319 USB_BUSIFFN_SET_BUS_WAKE_MODE (
323 typedef USB_BUSIFFN_SET_BUS_WAKE_MODE
*PUSB_BUSIFFN_SET_BUS_WAKE_MODE
;
328 USB_BUSIFFN_SET_DEVICE_FLAG (
330 IN GUID
*DeviceFlagGuid
,
332 IN ULONG ValueLength
);
334 typedef USB_BUSIFFN_SET_DEVICE_FLAG
*PUSB_BUSIFFN_SET_DEVICE_FLAG
;
339 USB_BUSIFFN_SET_DEVHANDLE_DATA (
341 IN PVOID DeviceHandle
,
342 IN PDEVICE_OBJECT UsbDevicePdo
);
344 typedef USB_BUSIFFN_SET_DEVHANDLE_DATA
*PUSB_BUSIFFN_SET_DEVHANDLE_DATA
;
349 USB_BUSIFFN_TEST_POINT (
351 IN PVOID DeviceHandle
,
355 typedef USB_BUSIFFN_TEST_POINT
*PUSB_BUSIFFN_TEST_POINT
;
360 USB_BUSIFFN_GET_DEVICE_PERFORMANCE_INFO (
362 IN PUSB_DEVICE_HANDLE DeviceHandle
,
363 OUT PVOID DeviceInformationBuffer
,
364 IN ULONG DeviceInformationBufferLength
,
365 IN OUT PULONG LengthOfDataCopied
);
367 typedef USB_BUSIFFN_GET_DEVICE_PERFORMANCE_INFO
*PUSB_BUSIFFN_GET_DEVICE_PERFORMANCE_INFO
;
372 USB_BUSIFFN_WAIT_ASYNC_POWERUP (
373 IN PVOID BusContext
);
375 typedef USB_BUSIFFN_WAIT_ASYNC_POWERUP
*PUSB_BUSIFFN_WAIT_ASYNC_POWERUP
;
380 USB_BUSIFFN_GET_DEVICE_ADDRESS (
382 IN PUSB_DEVICE_HANDLE DeviceHandle
,
383 OUT PUSHORT DeviceAddress
);
385 typedef USB_BUSIFFN_GET_DEVICE_ADDRESS
*PUSB_BUSIFFN_GET_DEVICE_ADDRESS
;
390 USB_BUSIFFN_DEREF_DEVICE_HANDLE (
392 IN PUSB_DEVICE_HANDLE DeviceHandle
,
396 typedef USB_BUSIFFN_DEREF_DEVICE_HANDLE
*PUSB_BUSIFFN_DEREF_DEVICE_HANDLE
;
401 USB_BUSIFFN_REF_DEVICE_HANDLE (
403 IN PUSB_DEVICE_HANDLE DeviceHandle
,
407 typedef USB_BUSIFFN_REF_DEVICE_HANDLE
*PUSB_BUSIFFN_REF_DEVICE_HANDLE
;
412 USB_BUSIFFN_SET_DEVICE_HANDLE_IDLE_READY_STATE (
414 IN PUSB_DEVICE_HANDLE DeviceHandle
,
415 IN ULONG NewIdleReadyState
);
417 typedef USB_BUSIFFN_SET_DEVICE_HANDLE_IDLE_READY_STATE
*PUSB_BUSIFFN_SET_DEVICE_HANDLE_IDLE_READY_STATE
;
422 USB_BUSIFFN_GET_CONTAINER_ID_FOR_PORT (
424 IN USHORT PortNumber
,
425 OUT LPGUID ContainerId
);
427 typedef USB_BUSIFFN_GET_CONTAINER_ID_FOR_PORT
*PUSB_BUSIFFN_GET_CONTAINER_ID_FOR_PORT
;
432 USB_BUSIFFN_SET_CONTAINER_ID_FOR_PORT (
434 IN USHORT PortNumber
,
435 IN LPGUID ContainerId
);
437 typedef USB_BUSIFFN_SET_CONTAINER_ID_FOR_PORT
*PUSB_BUSIFFN_SET_CONTAINER_ID_FOR_PORT
;
442 USB_BUSIFFN_ABORT_ALL_DEVICE_PIPES (
444 IN PUSB_DEVICE_HANDLE DeviceHandle
);
446 typedef USB_BUSIFFN_ABORT_ALL_DEVICE_PIPES
*PUSB_BUSIFFN_ABORT_ALL_DEVICE_PIPES
;
448 #define ERRATA_FLAG_RESET_TT_ON_CANCEL 1
449 #define ERRATA_FLAG_NO_CLEAR_TT_BUFFER_ON_CANCEL 2
451 #define USB_BUSIF_HUB_VERSION_0 0x0000
452 #define USB_BUSIF_HUB_VERSION_1 0x0001
453 #define USB_BUSIF_HUB_VERSION_2 0x0002
454 #define USB_BUSIF_HUB_VERSION_3 0x0003
455 #define USB_BUSIF_HUB_VERSION_4 0x0004
456 #define USB_BUSIF_HUB_VERSION_5 0x0005
457 #define USB_BUSIF_HUB_VERSION_6 0x0006
458 #define USB_BUSIF_HUB_VERSION_7 0x0007
460 #define USB_BUSIF_HUB_MIDUMP_VERSION_0 0x0000
462 #define USB_BUSIF_HUB_SS_VERSION_0 0x0000
467 USB_BUSIFFN_SET_DEVICE_ERRATA_FLAG (
469 IN PUSB_DEVICE_HANDLE DeviceHandle
,
470 IN ULONG DeviceErrataFlag
);
472 typedef USB_BUSIFFN_SET_DEVICE_ERRATA_FLAG
*PUSB_BUSIFFN_SET_DEVICE_ERRATA_FLAG
;
474 DEFINE_GUID(USB_BUS_INTERFACE_HUB_GUID
,
475 0xb2bb8c0a, 0x5ab4, 0x11d3, 0xa8, 0xcd, 0x0, 0xc0, 0x4f, 0x68, 0x74, 0x7a);
477 typedef struct _USB_BUS_INTERFACE_HUB_V0
{
481 PINTERFACE_REFERENCE InterfaceReference
;
482 PINTERFACE_DEREFERENCE InterfaceDereference
;
483 } USB_BUS_INTERFACE_HUB_V0
, *PUSB_BUS_INTERFACE_HUB_V0
;
485 typedef struct _USB_BUS_INTERFACE_HUB_V1
{
489 PINTERFACE_REFERENCE InterfaceReference
;
490 PINTERFACE_DEREFERENCE InterfaceDereference
;
491 PUSB_BUSIFFN_CREATE_USB_DEVICE CreateUsbDevice
;
492 PUSB_BUSIFFN_INITIALIZE_USB_DEVICE InitializeUsbDevice
;
493 PUSB_BUSIFFN_GET_USB_DESCRIPTORS GetUsbDescriptors
;
494 PUSB_BUSIFFN_REMOVE_USB_DEVICE RemoveUsbDevice
;
495 PUSB_BUSIFFN_RESTORE_DEVICE RestoreUsbDevice
;
496 PUSB_BUSIFFN_GET_POTRTHACK_FLAGS GetPortHackFlags
;
497 PUSB_BUSIFFN_GET_DEVICE_INFORMATION QueryDeviceInformation
;
498 } USB_BUS_INTERFACE_HUB_V1
, *PUSB_BUS_INTERFACE_HUB_V1
;
500 typedef struct _USB_BUS_INTERFACE_HUB_V2
{
504 PINTERFACE_REFERENCE InterfaceReference
;
505 PINTERFACE_DEREFERENCE InterfaceDereference
;
506 PUSB_BUSIFFN_CREATE_USB_DEVICE CreateUsbDevice
;
507 PUSB_BUSIFFN_INITIALIZE_USB_DEVICE InitializeUsbDevice
;
508 PUSB_BUSIFFN_GET_USB_DESCRIPTORS GetUsbDescriptors
;
509 PUSB_BUSIFFN_REMOVE_USB_DEVICE RemoveUsbDevice
;
510 PUSB_BUSIFFN_RESTORE_DEVICE RestoreUsbDevice
;
511 PUSB_BUSIFFN_GET_POTRTHACK_FLAGS GetPortHackFlags
;
512 PUSB_BUSIFFN_GET_DEVICE_INFORMATION QueryDeviceInformation
;
513 PUSB_BUSIFFN_GET_CONTROLLER_INFORMATION GetControllerInformation
;
514 PUSB_BUSIFFN_CONTROLLER_SELECTIVE_SUSPEND ControllerSelectiveSuspend
;
515 PUSB_BUSIFFN_GET_EXTENDED_HUB_INFO GetExtendedHubInformation
;
516 PUSB_BUSIFFN_GET_ROOTHUB_SYM_NAME GetRootHubSymbolicName
;
517 PUSB_BUSIFFN_GET_DEVICE_BUSCONTEXT GetDeviceBusContext
;
518 PUSB_BUSIFFN_INITIALIZE_20HUB Initialize20Hub
;
519 } USB_BUS_INTERFACE_HUB_V2
, *PUSB_BUS_INTERFACE_HUB_V2
;
521 typedef struct _USB_BUS_INTERFACE_HUB_V3
{
525 PINTERFACE_REFERENCE InterfaceReference
;
526 PINTERFACE_DEREFERENCE InterfaceDereference
;
527 PUSB_BUSIFFN_CREATE_USB_DEVICE CreateUsbDevice
;
528 PUSB_BUSIFFN_INITIALIZE_USB_DEVICE InitializeUsbDevice
;
529 PUSB_BUSIFFN_GET_USB_DESCRIPTORS GetUsbDescriptors
;
530 PUSB_BUSIFFN_REMOVE_USB_DEVICE RemoveUsbDevice
;
531 PUSB_BUSIFFN_RESTORE_DEVICE RestoreUsbDevice
;
532 PUSB_BUSIFFN_GET_POTRTHACK_FLAGS GetPortHackFlags
;
533 PUSB_BUSIFFN_GET_DEVICE_INFORMATION QueryDeviceInformation
;
534 PUSB_BUSIFFN_GET_CONTROLLER_INFORMATION GetControllerInformation
;
535 PUSB_BUSIFFN_CONTROLLER_SELECTIVE_SUSPEND ControllerSelectiveSuspend
;
536 PUSB_BUSIFFN_GET_EXTENDED_HUB_INFO GetExtendedHubInformation
;
537 PUSB_BUSIFFN_GET_ROOTHUB_SYM_NAME GetRootHubSymbolicName
;
538 PUSB_BUSIFFN_GET_DEVICE_BUSCONTEXT GetDeviceBusContext
;
539 PUSB_BUSIFFN_INITIALIZE_20HUB Initialize20Hub
;
540 PUSB_BUSIFFN_ROOTHUB_INIT_NOTIFY RootHubInitNotification
;
541 } USB_BUS_INTERFACE_HUB_V3
, *PUSB_BUS_INTERFACE_HUB_V3
;
543 typedef struct _USB_BUS_INTERFACE_HUB_V4
{
547 PINTERFACE_REFERENCE InterfaceReference
;
548 PINTERFACE_DEREFERENCE InterfaceDereference
;
549 PUSB_BUSIFFN_CREATE_USB_DEVICE CreateUsbDevice
;
550 PUSB_BUSIFFN_INITIALIZE_USB_DEVICE InitializeUsbDevice
;
551 PUSB_BUSIFFN_GET_USB_DESCRIPTORS GetUsbDescriptors
;
552 PUSB_BUSIFFN_REMOVE_USB_DEVICE RemoveUsbDevice
;
553 PUSB_BUSIFFN_RESTORE_DEVICE RestoreUsbDevice
;
554 PUSB_BUSIFFN_GET_POTRTHACK_FLAGS GetPortHackFlags
;
555 PUSB_BUSIFFN_GET_DEVICE_INFORMATION QueryDeviceInformation
;
556 PUSB_BUSIFFN_GET_CONTROLLER_INFORMATION GetControllerInformation
;
557 PUSB_BUSIFFN_CONTROLLER_SELECTIVE_SUSPEND ControllerSelectiveSuspend
;
558 PUSB_BUSIFFN_GET_EXTENDED_HUB_INFO GetExtendedHubInformation
;
559 PUSB_BUSIFFN_GET_ROOTHUB_SYM_NAME GetRootHubSymbolicName
;
560 PUSB_BUSIFFN_GET_DEVICE_BUSCONTEXT GetDeviceBusContext
;
561 PUSB_BUSIFFN_INITIALIZE_20HUB Initialize20Hub
;
562 PUSB_BUSIFFN_ROOTHUB_INIT_NOTIFY RootHubInitNotification
;
563 PUSB_BUSIFFN_FLUSH_TRANSFERS FlushTransfers
;
564 } USB_BUS_INTERFACE_HUB_V4
, *PUSB_BUS_INTERFACE_HUB_V4
;
566 typedef struct _USB_BUS_INTERFACE_HUB_V5
{
570 PINTERFACE_REFERENCE InterfaceReference
;
571 PINTERFACE_DEREFERENCE InterfaceDereference
;
572 PUSB_BUSIFFN_CREATE_USB_DEVICE CreateUsbDevice
;
573 PUSB_BUSIFFN_INITIALIZE_USB_DEVICE InitializeUsbDevice
;
574 PUSB_BUSIFFN_GET_USB_DESCRIPTORS GetUsbDescriptors
;
575 PUSB_BUSIFFN_REMOVE_USB_DEVICE RemoveUsbDevice
;
576 PUSB_BUSIFFN_RESTORE_DEVICE RestoreUsbDevice
;
577 PUSB_BUSIFFN_GET_POTRTHACK_FLAGS GetPortHackFlags
;
578 PUSB_BUSIFFN_GET_DEVICE_INFORMATION QueryDeviceInformation
;
579 PUSB_BUSIFFN_GET_CONTROLLER_INFORMATION GetControllerInformation
;
580 PUSB_BUSIFFN_CONTROLLER_SELECTIVE_SUSPEND ControllerSelectiveSuspend
;
581 PUSB_BUSIFFN_GET_EXTENDED_HUB_INFO GetExtendedHubInformation
;
582 PUSB_BUSIFFN_GET_ROOTHUB_SYM_NAME GetRootHubSymbolicName
;
583 PUSB_BUSIFFN_GET_DEVICE_BUSCONTEXT GetDeviceBusContext
;
584 PUSB_BUSIFFN_INITIALIZE_20HUB Initialize20Hub
;
585 PUSB_BUSIFFN_ROOTHUB_INIT_NOTIFY RootHubInitNotification
;
586 PUSB_BUSIFFN_FLUSH_TRANSFERS FlushTransfers
;
587 PUSB_BUSIFFN_SET_DEVHANDLE_DATA SetDeviceHandleData
;
588 } USB_BUS_INTERFACE_HUB_V5
, *PUSB_BUS_INTERFACE_HUB_V5
;
590 typedef struct _USB_BUS_INTERFACE_HUB_V6
{
594 PINTERFACE_REFERENCE InterfaceReference
;
595 PINTERFACE_DEREFERENCE InterfaceDereference
;
596 PUSB_BUSIFFN_CREATE_USB_DEVICE_EX CreateUsbDevice
;
597 PUSB_BUSIFFN_INITIALIZE_USB_DEVICE_EX InitializeUsbDevice
;
598 PUSB_BUSIFFN_GET_USB_DESCRIPTORS GetUsbDescriptors
;
599 PUSB_BUSIFFN_REMOVE_USB_DEVICE RemoveUsbDevice
;
600 PUSB_BUSIFFN_RESTORE_DEVICE RestoreUsbDevice
;
601 PUSB_BUSIFFN_GET_POTRTHACK_FLAGS GetPortHackFlags
;
602 PUSB_BUSIFFN_GET_DEVICE_INFORMATION QueryDeviceInformation
;
603 PUSB_BUSIFFN_GET_CONTROLLER_INFORMATION GetControllerInformation
;
604 PUSB_BUSIFFN_CONTROLLER_SELECTIVE_SUSPEND ControllerSelectiveSuspend
;
605 PUSB_BUSIFFN_GET_EXTENDED_HUB_INFO GetExtendedHubInformation
;
606 PUSB_BUSIFFN_GET_ROOTHUB_SYM_NAME GetRootHubSymbolicName
;
607 PUSB_BUSIFFN_GET_DEVICE_BUSCONTEXT GetDeviceBusContext
;
608 PUSB_BUSIFFN_INITIALIZE_20HUB Initialize20Hub
;
609 PUSB_BUSIFFN_ROOTHUB_INIT_NOTIFY RootHubInitNotification
;
610 PUSB_BUSIFFN_FLUSH_TRANSFERS FlushTransfers
;
611 PUSB_BUSIFFN_SET_DEVHANDLE_DATA SetDeviceHandleData
;
612 PUSB_BUSIFFN_IS_ROOT HubIsRoot
;
613 PUSB_BUSIFFN_ACQUIRE_SEMAPHORE AcquireBusSemaphore
;
614 PUSB_BUSIFFN_RELEASE_SEMAPHORE ReleaseBusSemaphore
;
615 PUSB_BUSIFFN_CALC_PIPE_BANDWIDTH CaculatePipeBandwidth
;
616 PUSB_BUSIFFN_SET_BUS_WAKE_MODE SetBusSystemWakeMode
;
617 PUSB_BUSIFFN_SET_DEVICE_FLAG SetDeviceFlag
;
618 PUSB_BUSIFFN_TEST_POINT HubTestPoint
;
619 PUSB_BUSIFFN_GET_DEVICE_PERFORMANCE_INFO GetDevicePerformanceInfo
;
620 PUSB_BUSIFFN_WAIT_ASYNC_POWERUP WaitAsyncPowerUp
;
621 PUSB_BUSIFFN_GET_DEVICE_ADDRESS GetDeviceAddress
;
622 PUSB_BUSIFFN_REF_DEVICE_HANDLE RefDeviceHandle
;
623 PUSB_BUSIFFN_DEREF_DEVICE_HANDLE DerefDeviceHandle
;
624 PUSB_BUSIFFN_SET_DEVICE_HANDLE_IDLE_READY_STATE SetDeviceHandleIdleReadyState
;
625 } USB_BUS_INTERFACE_HUB_V6
, *PUSB_BUS_INTERFACE_HUB_V6
;
627 typedef struct _USB_BUS_INTERFACE_HUB_V7
{
631 PINTERFACE_REFERENCE InterfaceReference
;
632 PINTERFACE_DEREFERENCE InterfaceDereference
;
633 PUSB_BUSIFFN_CREATE_USB_DEVICE_EX CreateUsbDevice
;
634 PUSB_BUSIFFN_INITIALIZE_USB_DEVICE_EX InitializeUsbDevice
;
635 PUSB_BUSIFFN_GET_USB_DESCRIPTORS GetUsbDescriptors
;
636 PUSB_BUSIFFN_REMOVE_USB_DEVICE RemoveUsbDevice
;
637 PUSB_BUSIFFN_RESTORE_DEVICE RestoreUsbDevice
;
638 PUSB_BUSIFFN_GET_POTRTHACK_FLAGS GetPortHackFlags
;
639 PUSB_BUSIFFN_GET_DEVICE_INFORMATION QueryDeviceInformation
;
640 PUSB_BUSIFFN_GET_CONTROLLER_INFORMATION GetControllerInformation
;
641 PUSB_BUSIFFN_CONTROLLER_SELECTIVE_SUSPEND ControllerSelectiveSuspend
;
642 PUSB_BUSIFFN_GET_EXTENDED_HUB_INFO GetExtendedHubInformation
;
643 PUSB_BUSIFFN_GET_ROOTHUB_SYM_NAME GetRootHubSymbolicName
;
644 PUSB_BUSIFFN_GET_DEVICE_BUSCONTEXT GetDeviceBusContext
;
645 PUSB_BUSIFFN_INITIALIZE_20HUB Initialize20Hub
;
646 PUSB_BUSIFFN_ROOTHUB_INIT_NOTIFY RootHubInitNotification
;
647 PUSB_BUSIFFN_FLUSH_TRANSFERS FlushTransfers
;
648 PUSB_BUSIFFN_SET_DEVHANDLE_DATA SetDeviceHandleData
;
649 PUSB_BUSIFFN_IS_ROOT HubIsRoot
;
650 PUSB_BUSIFFN_ACQUIRE_SEMAPHORE AcquireBusSemaphore
;
651 PUSB_BUSIFFN_RELEASE_SEMAPHORE ReleaseBusSemaphore
;
652 PUSB_BUSIFFN_CALC_PIPE_BANDWIDTH CaculatePipeBandwidth
;
653 PUSB_BUSIFFN_SET_BUS_WAKE_MODE SetBusSystemWakeMode
;
654 PUSB_BUSIFFN_SET_DEVICE_FLAG SetDeviceFlag
;
655 PUSB_BUSIFFN_TEST_POINT HubTestPoint
;
656 PUSB_BUSIFFN_GET_DEVICE_PERFORMANCE_INFO GetDevicePerformanceInfo
;
657 PUSB_BUSIFFN_WAIT_ASYNC_POWERUP WaitAsyncPowerUp
;
658 PUSB_BUSIFFN_GET_DEVICE_ADDRESS GetDeviceAddress
;
659 PUSB_BUSIFFN_REF_DEVICE_HANDLE RefDeviceHandle
;
660 PUSB_BUSIFFN_DEREF_DEVICE_HANDLE DerefDeviceHandle
;
661 PUSB_BUSIFFN_SET_DEVICE_HANDLE_IDLE_READY_STATE SetDeviceHandleIdleReadyState
;
662 PUSB_BUSIFFN_CREATE_USB_DEVICE_V7 CreateUsbDeviceV7
;
663 PUSB_BUSIFFN_GET_CONTAINER_ID_FOR_PORT GetContainerIdForPort
;
664 PUSB_BUSIFFN_SET_CONTAINER_ID_FOR_PORT SetContainerIdForPort
;
665 PUSB_BUSIFFN_ABORT_ALL_DEVICE_PIPES AbortAllDevicePipes
;
666 PUSB_BUSIFFN_SET_DEVICE_ERRATA_FLAG SetDeviceErrataFlag
;
667 } USB_BUS_INTERFACE_HUB_V7
, *PUSB_BUS_INTERFACE_HUB_V7
;
669 DEFINE_GUID(USB_BUS_INTERFACE_HUB_MINIDUMP_GUID
,
670 0xc5485f21, 0x4e81, 0x4a23, 0xa8, 0xf9, 0xd8, 0x51, 0x8a, 0xf4, 0x5c, 0x38);
673 (USB_BUSIFFN
*PUSB_BUSIFFN_SET_MINIDUMP_FLAGS
) (
676 typedef struct _USB_BUS_INTERFACE_HUB_MINIDUMP
{
680 PINTERFACE_REFERENCE InterfaceReference
;
681 PINTERFACE_DEREFERENCE InterfaceDereference
;
682 PUSB_BUSIFFN_SET_MINIDUMP_FLAGS SetUsbPortMiniDumpFlags
;
683 } USB_BUS_INTERFACE_HUB_MINIDUMP
, *PUSB_BUS_INTERFACE_HUB_MINIDUMP
;
685 DEFINE_GUID(USB_BUS_INTERFACE_HUB_SS_GUID
,
686 0xbfc3f363, 0x8ba1, 0x4c7b, 0x97, 0xba, 0x9b, 0x12, 0xb1, 0xca, 0x13, 0x2f);
689 (USB_BUSIFFN
*PUSB_BUSIFFN_SUSPEND_HUB
) (
693 (USB_BUSIFFN
*PUSB_BUSIFFN_RESUME_HUB
) (
696 typedef struct _USB_BUS_INTERFACE_HUB_SELECTIVE_SUSPEND
{
700 PINTERFACE_REFERENCE InterfaceReference
;
701 PINTERFACE_DEREFERENCE InterfaceDereference
;
702 PUSB_BUSIFFN_SUSPEND_HUB SuspendHub
;
703 PUSB_BUSIFFN_RESUME_HUB ResumeHub
;
704 } USB_BUS_INTERFACE_HUB_SELECTIVE_SUSPEND
, *PUSB_BUS_INTERFACE_HUB_SELECTIVE_SUSPEND
;
706 #include <pshpack1.h>
708 typedef struct _USB_PIPE_INFORMATION_0
{
709 USB_ENDPOINT_DESCRIPTOR EndpointDescriptor
;
711 ULONG ScheduleOffset
;
712 } USB_PIPE_INFORMATION_0
, *PUSB_PIPE_INFORMATION_0
;
714 typedef struct _USB_LEVEL_INFORMATION
{
715 ULONG InformationLevel
;
717 } USB_LEVEL_INFORMATION
, *PUSB_LEVEL_INFORMATION
;
719 typedef struct _USB_DEVICE_INFORMATION_0
{
720 ULONG InformationLevel
;
723 USB_DEVICE_DESCRIPTOR DeviceDescriptor
;
725 UCHAR CurrentConfigurationValue
;
727 USHORT DeviceAddress
;
729 USB_DEVICE_SPEED DeviceSpeed
;
730 USB_DEVICE_TYPE DeviceType
;
731 ULONG NumberOfOpenPipes
;
732 USB_PIPE_INFORMATION_0 PipeList
[1];
733 } USB_DEVICE_INFORMATION_0
, *PUSB_DEVICE_INFORMATION_0
;
735 typedef struct _USB_CONTROLLER_INFORMATION_0
{
736 ULONG InformationLevel
;
738 BOOLEAN SelectiveSuspendEnabled
;
739 BOOLEAN IsHighSpeedController
;
740 } USB_CONTROLLER_INFORMATION_0
, *PUSB_CONTROLLER_INFORMATION_0
;
742 typedef struct _USB_CONTROLLER_INFORMATION_1
{
743 ULONG InformationLevel
;
745 BOOLEAN SelectiveSuspendEnabled
;
746 BOOLEAN IsHighSpeedController
;
750 } USB_CONTROLLER_INFORMATION_1
, *PUSB_CONTROLLER_INFORMATION_1
;
752 typedef struct _USB_EXTPORT_INFORMATION_0
{
753 ULONG PhysicalPortNumber
;
754 ULONG PortLabelNumber
;
757 ULONG PortAttributes
;
758 } USB_EXTPORT_INFORMATION_0
, *PUSB_EXTPORT_INFORMATION
;
760 typedef struct _USB_EXTHUB_INFORMATION_0
{
761 ULONG InformationLevel
;
763 USB_EXTPORT_INFORMATION_0 Port
[255];
764 } USB_EXTHUB_INFORMATION_0
, *PUSB_EXTHUB_INFORMATION_0
;
766 typedef struct _USB_DEVICE_PERFORMANCE_INFO_0
{
767 ULONG InformationLevel
;
771 ULONG ControlDataBytes
;
772 ULONG ControlUrbCount
;
775 ULONG InterruptBytes
;
776 ULONG InterruptUrbCount
;
777 ULONG AllocedInterrupt
[6];
779 ULONG Total32secBandwidth
;
780 ULONG TotalTtBandwidth
;
781 ULONG TotalIsoLatency
;
782 ULONG DroppedIsoPackets
;
783 ULONG TransferErrors
;
784 } USB_DEVICE_PERFORMANCE_INFO_0
, *PUSB_DEVICE_PERFORMANCE_INFO_0
;