- Implement EnumServicesStatusW.
[reactos.git] / reactos / drivers / usb / usbhub / usbhub.h
1 #include <debug.h>
2
3 #include <ntddk.h>
4 #include <usbioctl.h>
5
6 #include "../miniport/usb_wrapper.h"
7 #include "../usbport/hub.h"
8
9 #define USB_HUB_TAG TAG('u','s','b','h')
10
11 NTSTATUS STDCALL
12 IoAttachDeviceToDeviceStackSafe(
13 IN PDEVICE_OBJECT SourceDevice,
14 IN PDEVICE_OBJECT TargetDevice,
15 OUT PDEVICE_OBJECT *AttachedToDeviceObject);
16
17 typedef struct _HUB_DEVICE_EXTENSION
18 {
19 BOOLEAN IsFDO;
20 struct usb_device* dev;
21 PDEVICE_OBJECT LowerDevice;
22
23 PDEVICE_OBJECT Children[USB_MAXCHILDREN];
24
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;
32
33 /* createclose.c */
34 NTSTATUS STDCALL
35 UsbhubCreate(
36 IN PDEVICE_OBJECT DeviceObject,
37 IN PIRP Irp);
38
39 NTSTATUS STDCALL
40 UsbhubClose(
41 IN PDEVICE_OBJECT DeviceObject,
42 IN PIRP Irp);
43
44 NTSTATUS STDCALL
45 UsbhubCleanup(
46 IN PDEVICE_OBJECT DeviceObject,
47 IN PIRP Irp);
48
49 /* fdo.c */
50 NTSTATUS STDCALL
51 UsbhubPnpFdo(
52 IN PDEVICE_OBJECT DeviceObject,
53 IN PIRP Irp);
54
55 NTSTATUS
56 UsbhubDeviceControlFdo(
57 IN PDEVICE_OBJECT DeviceObject,
58 IN PIRP Irp);
59
60 /* misc.c */
61 NTSTATUS
62 ForwardIrpAndWait(
63 IN PDEVICE_OBJECT DeviceObject,
64 IN PIRP Irp);
65
66 NTSTATUS STDCALL
67 ForwardIrpAndForget(
68 IN PDEVICE_OBJECT DeviceObject,
69 IN PIRP Irp);
70
71 NTSTATUS
72 UsbhubDuplicateUnicodeString(
73 OUT PUNICODE_STRING Destination,
74 IN PUNICODE_STRING Source,
75 IN POOL_TYPE PoolType);
76
77 NTSTATUS
78 UsbhubInitMultiSzString(
79 OUT PUNICODE_STRING Destination,
80 ... /* list of PCSZ */);
81
82 /* pdo.c */
83 NTSTATUS STDCALL
84 UsbhubPnpPdo(
85 IN PDEVICE_OBJECT DeviceObject,
86 IN PIRP Irp);
87
88 NTSTATUS
89 UsbhubDeviceControlPdo(
90 IN PDEVICE_OBJECT DeviceObject,
91 IN PIRP Irp);