4 #include <ddk/usbioctl.h>
6 #include "../usb_wrapper.h"
7 #include "../core/hub.h"
9 #define USB_HUB_TAG TAG('u','s','b','h')
12 IoAttachDeviceToDeviceStackSafe(
13 IN PDEVICE_OBJECT SourceDevice
,
14 IN PDEVICE_OBJECT TargetDevice
,
15 OUT PDEVICE_OBJECT
*AttachedToDeviceObject
);
17 typedef struct _HUB_DEVICE_EXTENSION
20 struct usb_device
* dev
;
21 PDEVICE_OBJECT LowerDevice
;
23 PDEVICE_OBJECT Children
[USB_MAXCHILDREN
];
25 /* Fields valid only when IsFDO == FALSE */
26 UNICODE_STRING DeviceId
; // REG_SZ
27 UNICODE_STRING InstanceId
; // REG_SZ
28 UNICODE_STRING HardwareIds
; // REG_MULTI_SZ
29 UNICODE_STRING CompatibleIds
; // REG_MULTI_SZ
30 UNICODE_STRING SymbolicLinkName
;
31 } HUB_DEVICE_EXTENSION
, *PHUB_DEVICE_EXTENSION
;
36 IN PDEVICE_OBJECT DeviceObject
,
41 IN PDEVICE_OBJECT DeviceObject
,
46 IN PDEVICE_OBJECT DeviceObject
,
52 IN PDEVICE_OBJECT DeviceObject
,
56 UsbhubDeviceControlFdo(
57 IN PDEVICE_OBJECT DeviceObject
,
63 IN PDEVICE_OBJECT DeviceObject
,
68 IN PDEVICE_OBJECT DeviceObject
,
72 UsbhubDuplicateUnicodeString(
73 OUT PUNICODE_STRING Destination
,
74 IN PUNICODE_STRING Source
,
75 IN POOL_TYPE PoolType
);
78 UsbhubInitMultiSzString(
79 OUT PUNICODE_STRING Destination
,
80 ... /* list of PCSZ */);
85 IN PDEVICE_OBJECT DeviceObject
,
89 UsbhubDeviceControlPdo(
90 IN PDEVICE_OBJECT DeviceObject
,