ReactOS  0.4.14-dev-52-g6116262
common_interfaces.h
Go to the documentation of this file.
1 
2 #ifndef COMMON_INTERFACES_HPP
3 #define COMMON_INTERFACES_HPP
4 
5 typedef struct _USB_ENDPOINT
6 {
12 
13 typedef struct _USB_INTERFACE
14 {
19 
20 typedef struct
21 {
25 
26 //---------------------------------------------------------------------------
27 //
28 // Object Hierarchy
29 // --------------------------------------------------------------------
30 // | IRootHCDController |
31 // | IHCDController Intel USB Universal Host Controller - 3A37 |
32 // | IHCDController - Intel USB Universal HostController - 3A38 |
33 // | IHCDController - Intel USB Universal HostController - 3A38 |
34 // |------------------------------------------------------------------|
35 //
36 //
37 // IHCDController Intel USB Universal Host Controller - 3A37
38 // IHubController
39 // IUSBHardwareDevice
40 // IDMAMemoryManager
41 // IUSBQueue <- interacts with -> IUSBRequest
42 //
43 //
44 // Each IHCDController creates an IUSBHardwareDevice class upon initialization. The
45 // IUSBHardwardeDevice class is used to abstract usb controller specifics. The IHubController
46 // manages all attached devices and handles hub control ioctl requests.
47 //
48 // Each IUSBHardwareDevice has one IDMAMemoryManager and one IUSBQueue. The IDMAMemoryManager
49 // is used to handle dma memory allocations. The IUSBQueue manages requests which are send to the
50 // usb hardware. See IUSBRequest class for details.
51 //
52 
53 
54 //=========================================================================================
55 //
56 // class IRootHCDController
57 //
58 // Description: This class serves as the root host controller. The host controller mantains
59 // a list of registered controllers and provides support functions for the host controllers
60 
61 struct IHCDController;
62 
63 DECLARE_INTERFACE_(IRootHCDController, IUnknown)
64 {
66 
67 //-----------------------------------------------------------------------------------------
68 //
69 // Initialize
70 //
71 // Description: This function initializes the root host controller. It allocates the resources
72 // required to manage the registered controllers
73 
74  virtual NTSTATUS Initialize() = 0;
75 
76 //-----------------------------------------------------------------------------------------
77 //
78 // RegisterHCD
79 //
80 // Description: this function registers a host controller with the root host controller
81 
82  virtual NTSTATUS RegisterHCD(struct IHCDController * Controller) = 0;
83 
84 //-----------------------------------------------------------------------------------------
85 //
86 // UnregisterHCD
87 //
88 // Description: this function unregistes a host controller
89 
90  virtual NTSTATUS UnregisterHCD(struct IHCDController * Controller) = 0;
91 
92 //-----------------------------------------------------------------------------------------
93 //
94 // GetControllerCount
95 //
96 // Description: returns the number of host controllers registered
97 
98  virtual ULONG GetControllerCount() = 0;
99 
100 };
101 
102 typedef IRootHCDController *PROOTHDCCONTROLLER;
103 
104 //=========================================================================================
105 //
106 // class IHCDController
107 //
108 // Description: This class is used to manage a single USB host controller
109 //
110 
111 DECLARE_INTERFACE_(IHCDController, IUnknown)
112 {
114 
115 //-----------------------------------------------------------------------------------------
116 //
117 // Initialize
118 //
119 // Description: This function initializes the IHCDController implementation.
120 // It creates an IUSBHardwareDevice object and initializes it. It also registeres itself with
121 // the IRootHCDController
122 //
123  virtual NTSTATUS Initialize(IN PROOTHDCCONTROLLER RootHCDController,
126 
127 };
128 
129 typedef IHCDController *PHCDCONTROLLER;
130 
131 
132 //=========================================================================================
133 //
134 // class IUSBHardwareDevice
135 //
136 // Description: This class provides access to the usb hardware controller
137 //
138 
139 struct IDMAMemoryManager;
140 struct IUSBQueue;
141 
142 #define DEFINE_ABSTRACT_USBHARDWAREDEVICE() \
143  STDMETHOD_(NTSTATUS, Initialize)( THIS_ \
144  IN PDRIVER_OBJECT DriverObject, \
145  IN PDEVICE_OBJECT FunctionalDeviceObject, \
146  IN PDEVICE_OBJECT PhysicalDeviceObject, \
147  IN PDEVICE_OBJECT LowerDeviceObject) PURE; \
148  \
149  STDMETHOD_(NTSTATUS, PnpStart)( THIS_ \
150  IN PCM_RESOURCE_LIST RawResources, \
151  IN PCM_RESOURCE_LIST TranslatedResources) PURE; \
152  \
153  STDMETHOD_(NTSTATUS, PnpStop)( THIS) PURE; \
154  \
155  STDMETHOD_(NTSTATUS, GetDeviceDetails)( THIS_ \
156  OUT OPTIONAL PUSHORT VendorId, \
157  OUT OPTIONAL PUSHORT DeviceId, \
158  OUT OPTIONAL PULONG NumberOfPorts, \
159  OUT OPTIONAL PULONG Speed) PURE; \
160  \
161  STDMETHOD_(NTSTATUS, GetUSBQueue)( THIS_ \
162  OUT struct IUSBQueue **OutUsbQueue) PURE; \
163  \
164  STDMETHOD_(NTSTATUS, GetDMA)( THIS_ \
165  OUT struct IDMAMemoryManager **OutDMA) PURE; \
166  \
167  STDMETHOD_(NTSTATUS, ResetPort)( THIS_ \
168  IN ULONG PortNumber) PURE; \
169  \
170  STDMETHOD_(NTSTATUS, GetPortStatus)( THIS_ \
171  IN ULONG PortId, \
172  OUT USHORT *PortStatus, \
173  OUT USHORT *PortChange) PURE; \
174  \
175  STDMETHOD_(NTSTATUS, ClearPortStatus)( THIS_ \
176  IN ULONG PortId, \
177  IN ULONG Status) PURE; \
178  \
179  STDMETHOD_(NTSTATUS, SetPortFeature)( THIS_ \
180  IN ULONG PortId, \
181  IN ULONG Feature) PURE; \
182  \
183  STDMETHOD_(VOID, SetStatusChangeEndpointCallBack)( THIS_ \
184  IN PVOID CallBack, \
185  IN PVOID Context) PURE; \
186  \
187  STDMETHOD_(LPCSTR, GetUSBType)(THIS) PURE;
188 
189 
190 #define IMP_IUSBHARDWAREDEVICE \
191  STDMETHODIMP_(NTSTATUS) Initialize( \
192  IN PDRIVER_OBJECT DriverObject, \
193  IN PDEVICE_OBJECT FunctionalDeviceObject, \
194  IN PDEVICE_OBJECT PhysicalDeviceObject, \
195  IN PDEVICE_OBJECT LowerDeviceObject); \
196  \
197  STDMETHODIMP_(NTSTATUS) PnpStart( \
198  IN PCM_RESOURCE_LIST RawResources, \
199  IN PCM_RESOURCE_LIST TranslatedResources); \
200  \
201  STDMETHODIMP_(NTSTATUS) PnpStop(VOID); \
202  \
203  STDMETHODIMP_(NTSTATUS) GetDeviceDetails( \
204  OUT OPTIONAL PUSHORT VendorId, \
205  OUT OPTIONAL PUSHORT DeviceId, \
206  OUT OPTIONAL PULONG NumberOfPorts, \
207  OUT OPTIONAL PULONG Speed); \
208  \
209  STDMETHODIMP_(NTSTATUS) GetUSBQueue( \
210  OUT struct IUSBQueue **OutUsbQueue); \
211  \
212  STDMETHODIMP_(NTSTATUS) GetDMA( \
213  OUT struct IDMAMemoryManager **OutDMA); \
214  \
215  STDMETHODIMP_(NTSTATUS) ResetPort( \
216  IN ULONG PortNumber); \
217  \
218  STDMETHODIMP_(NTSTATUS) GetPortStatus( \
219  IN ULONG PortId, \
220  OUT USHORT *PortStatus, \
221  OUT USHORT *PortChange); \
222  \
223  STDMETHODIMP_(NTSTATUS) ClearPortStatus( \
224  IN ULONG PortId, \
225  IN ULONG Status); \
226  \
227  STDMETHODIMP_(NTSTATUS) SetPortFeature( \
228  IN ULONG PortId, \
229  IN ULONG Feature); \
230  \
231  STDMETHODIMP_(VOID) SetStatusChangeEndpointCallBack( \
232  IN PVOID CallBack, \
233  IN PVOID Context); \
234  \
235  STDMETHODIMP_(LPCSTR) GetUSBType();
236 
237 DECLARE_INTERFACE_(IUSBHardwareDevice, IUnknown)
238 {
241 };
242 
243 typedef IUSBHardwareDevice *PUSBHARDWAREDEVICE;
244 
245 
246 //=========================================================================================
247 //
248 // class IDMAMemoryManager
249 //
250 // Description: This class provides access to the dma buffer. It provides methods to
251 // allocate and free from the dma buffer
252 //
253 
254 DECLARE_INTERFACE_(IDMAMemoryManager, IUnknown)
255 {
257 
258 //-----------------------------------------------------------------------------------------
259 //
260 // Initialize
261 //
262 // Description: initializes the memory manager
263 
266  IN ULONG DmaBufferSize,
267  IN PVOID VirtualBase,
269  IN ULONG DefaultBlockSize) = 0;
270 
271 //-----------------------------------------------------------------------------------------
272 //
273 // Allocate
274 //
275 // Description: allocates block of memory from allocator
276 
277  virtual NTSTATUS Allocate(IN ULONG Size,
278  OUT PVOID *OutVirtualBase,
279  OUT PPHYSICAL_ADDRESS OutPhysicalAddress) = 0;
280 
281 
282 //-----------------------------------------------------------------------------------------
283 //
284 // Free
285 //
286 // Description: releases memory block
287 
288  virtual NTSTATUS Release(IN PVOID VirtualBase,
289  IN ULONG Size) = 0;
290 
291 };
292 
293 typedef IDMAMemoryManager *PDMAMEMORYMANAGER;
294 
295 
296 //=========================================================================================
297 //
298 // class IUSBRequest
299 //
300 // Description: This class is used to issue request to usb controller. The class is
301 // initialized using InitializeXXX methods. You also need to call SetEndpoint to define the endpoint
302 // In addition you can call SetCompletionDetails if you need to wait for the end of
303 // the request or want to complete an irp. You call AddUSBRequest to add the request to the queue.
304 // Once the request is completed the CompletionCallback is invoked. The CompletionCallback
305 // will take care of any completion details which have been set. If the request is cancelled, the
306 // CancelCallback routine is invoked.
307 //
308 
309 struct IUSBDevice;
310 
311 #define DEFINE_ABSTRACT_USBREQUEST() \
312  STDMETHOD_(NTSTATUS, InitializeWithSetupPacket)( THIS_ \
313  IN PDMAMEMORYMANAGER DmaManager, \
314  IN PUSB_DEFAULT_PIPE_SETUP_PACKET SetupPacket, \
315  IN struct IUSBDevice *Device, \
316  IN OPTIONAL struct _USB_ENDPOINT *EndpointDescriptor, \
317  IN OUT ULONG TransferBufferLength, \
318  IN OUT PMDL TransferBuffer) PURE; \
319  \
320  STDMETHOD_(NTSTATUS, InitializeWithIrp)( THIS_ \
321  IN PDMAMEMORYMANAGER DmaManager, \
322  IN struct IUSBDevice *Device, \
323  IN OUT PIRP Irp) PURE; \
324  \
325  STDMETHOD_(BOOLEAN, IsRequestComplete)( THIS) PURE; \
326  \
327  STDMETHOD_(ULONG, GetTransferType)( THIS) PURE; \
328  \
329  STDMETHOD_(VOID, GetResultStatus)( THIS_ \
330  OUT OPTIONAL NTSTATUS * NtStatusCode, \
331  OUT OPTIONAL PULONG UrbStatusCode) PURE;
332 
333 #define IMP_IUSBREQUEST \
334  STDMETHODIMP_(NTSTATUS) InitializeWithSetupPacket( \
335  IN PDMAMEMORYMANAGER DmaManager, \
336  IN PUSB_DEFAULT_PIPE_SETUP_PACKET SetupPacket, \
337  IN struct IUSBDevice *Device, \
338  IN OPTIONAL struct _USB_ENDPOINT *EndpointDescriptor, \
339  IN OUT ULONG TransferBufferLength, \
340  IN OUT PMDL TransferBuffer); \
341  \
342  STDMETHODIMP_(NTSTATUS) InitializeWithIrp( \
343  IN PDMAMEMORYMANAGER DmaManager, \
344  IN struct IUSBDevice *Device, \
345  IN OUT PIRP Irp); \
346  \
347  STDMETHODIMP_(BOOLEAN) IsRequestComplete(VOID); \
348  \
349  STDMETHODIMP_(ULONG) GetTransferType(VOID); \
350  \
351  STDMETHODIMP_(VOID) GetResultStatus( \
352  OUT OPTIONAL NTSTATUS * NtStatusCode, \
353  OUT OPTIONAL PULONG UrbStatusCode);
354 
356 {
359 };
360 
361 
362 typedef IUSBRequest *PUSBREQUEST;
363 
364 //=========================================================================================
365 //
366 // class IUSBQueue
367 //
368 // Description: This class manages pending requests
369 //
370 
371 #define DEFINE_ABSTRACT_USBQUEUE() \
372  STDMETHOD_(NTSTATUS, Initialize)( THIS_ \
373  IN PUSBHARDWAREDEVICE Hardware, \
374  IN PDMA_ADAPTER AdapterObject, \
375  IN PDMAMEMORYMANAGER MemManager, \
376  IN OPTIONAL PKSPIN_LOCK Lock) PURE; \
377  \
378  STDMETHOD_(NTSTATUS, AddUSBRequest)( THIS_ \
379  IN IUSBRequest * Request) PURE; \
380  \
381  STDMETHOD_(NTSTATUS, CreateUSBRequest)( THIS_ \
382  IN IUSBRequest **OutRequest) PURE; \
383  \
384  STDMETHOD_(NTSTATUS, AbortDevicePipe)( THIS_ \
385  IN UCHAR DeviceAddress, \
386  IN PUSB_ENDPOINT_DESCRIPTOR EndpointDescriptor) PURE;
387 
388 #define IMP_IUSBQUEUE \
389  STDMETHODIMP_(NTSTATUS) Initialize( \
390  IN PUSBHARDWAREDEVICE Hardware, \
391  IN PDMA_ADAPTER AdapterObject, \
392  IN PDMAMEMORYMANAGER MemManager, \
393  IN OPTIONAL PKSPIN_LOCK Lock); \
394  \
395  STDMETHODIMP_(NTSTATUS) AddUSBRequest( \
396  IN IUSBRequest * Request); \
397  \
398  STDMETHODIMP_(NTSTATUS) CreateUSBRequest( \
399  OUT IUSBRequest **OutRequest); \
400  \
401  STDMETHODIMP_(NTSTATUS) AbortDevicePipe( \
402  IN UCHAR DeviceAddress, \
403  IN PUSB_ENDPOINT_DESCRIPTOR EndpointDescriptor);
404 
406 {
409 };
410 
411 typedef IUSBQueue *PUSBQUEUE;
412 
413 //=========================================================================================
414 //
415 // class IHubController
416 //
417 // Description: This class implements a hub controller
418 //
419 
420 DECLARE_INTERFACE_(IHubController, IUnknown)
421 {
423 
424 //----------------------------------------------------------------------------------------
425 //
426 // Initialize
427 //
428 // Description: Initializes the hub controller
429 
431  IN PHCDCONTROLLER Controller,
433  IN BOOLEAN IsRootHubDevice,
434  IN ULONG DeviceAddress) = 0;
435 
436 //----------------------------------------------------------------------------------------
437 //
438 // GetHubControllerDeviceObject
439 //
440 // Description: Returns the hub controller device object
441 
442  virtual NTSTATUS GetHubControllerDeviceObject(PDEVICE_OBJECT * HubDeviceObject) = 0;
443 
444 //----------------------------------------------------------------------------------------
445 //
446 // GetHubControllerSymbolicLink
447 //
448 // Description: Returns the symbolic link of the root hub
449 
450  virtual NTSTATUS GetHubControllerSymbolicLink(ULONG BufferLength, PVOID Buffer, PULONG RequiredLength) = 0;
451 
452 
453 };
454 
455 typedef IHubController *PHUBCONTROLLER;
456 
457 //=========================================================================================
458 //
459 // class IDispatchIrp
460 //
461 // Description: This class is used to handle irp dispatch requests
462 //
463 
465 {
467 
468 //-----------------------------------------------------------------------------------------
469 //
470 // HandlePnp
471 //
472 // Description: This function handles all pnp requests
473 
474  virtual NTSTATUS HandlePnp(IN PDEVICE_OBJECT DeviceObject,
475  IN OUT PIRP Irp) = 0;
476 
477 //-----------------------------------------------------------------------------------------
478 //
479 // HandlePower
480 //
481 // Description: This function handles all power pnp requests
482 //
483  virtual NTSTATUS HandlePower(IN PDEVICE_OBJECT DeviceObject,
484  IN OUT PIRP Irp) = 0;
485 
486 //-----------------------------------------------------------------------------------------
487 //
488 // HandleDeviceControl
489 //
490 // Description: handles device io control requests
491 
492  virtual NTSTATUS HandleDeviceControl(IN PDEVICE_OBJECT DeviceObject,
493  IN OUT PIRP Irp) = 0;
494 
495 //-----------------------------------------------------------------------------------------
496 //
497 // HandleSystemControl
498 //
499 // Description: handles WMI system control requests
500 
501  virtual NTSTATUS HandleSystemControl(IN PDEVICE_OBJECT DeviceObject,
502  IN OUT PIRP Irp) = 0;
503 };
504 
505 typedef IDispatchIrp *PDISPATCHIRP;
506 
507 //=========================================================================================
508 //
509 // class IUSBDevice
510 //
511 // Description: This class is used to abstract details of a usb device
512 //
513 
515 {
517 
518 //----------------------------------------------------------------------------------------
519 //
520 // Initialize
521 //
522 // Description: Initializes the usb device
523 
524  virtual NTSTATUS Initialize(IN PHUBCONTROLLER HubController,
526  IN PVOID Parent,
527  IN ULONG Port,
528  IN ULONG PortStatus) = 0;
529 
530 //-----------------------------------------------------------------------------------------
531 //
532 // IsHub
533 //
534 // Description: returns true when device is a hub
535 
536  virtual BOOLEAN IsHub() = 0;
537 
538 //-----------------------------------------------------------------------------------------
539 //
540 // GetParent
541 //
542 // Description: gets the parent device of the this device
543 
544  virtual NTSTATUS GetParent(PVOID * Parent) = 0;
545 
546 //-----------------------------------------------------------------------------------------
547 //
548 // GetDeviceAddress
549 //
550 // Description: gets the device address of the this device
551 
552  virtual UCHAR GetDeviceAddress() = 0;
553 
554 
555 //-----------------------------------------------------------------------------------------
556 //
557 // GetPort
558 //
559 // Description: gets the port to which this device is connected
560 
561  virtual ULONG GetPort() = 0;
562 
563 //-----------------------------------------------------------------------------------------
564 //
565 // GetSpeed
566 //
567 // Description: gets the speed of the device
568 
569  virtual USB_DEVICE_SPEED GetSpeed() = 0;
570 
571 //-----------------------------------------------------------------------------------------
572 //
573 // GetType
574 //
575 // Description: gets the type of the device, either 1.1 or 2.0 device
576 
577  virtual USB_DEVICE_TYPE GetType() = 0;
578 
579 //-----------------------------------------------------------------------------------------
580 //
581 // GetState
582 //
583 // Description: gets the device state
584 
585  virtual ULONG GetState() = 0;
586 
587 //-----------------------------------------------------------------------------------------
588 //
589 // SetDeviceHandleData
590 //
591 // Description: sets device handle data
592 
593  virtual void SetDeviceHandleData(PVOID Data) = 0;
594 
595 //-----------------------------------------------------------------------------------------
596 //
597 // SetDeviceAddress
598 //
599 // Description: sets device handle data
600 
601  virtual NTSTATUS SetDeviceAddress(UCHAR DeviceAddress) = 0;
602 
603 //-----------------------------------------------------------------------------------------
604 //
605 // GetDeviceDescriptor
606 //
607 // Description: sets device handle data
608 
609  virtual void GetDeviceDescriptor(PUSB_DEVICE_DESCRIPTOR DeviceDescriptor) = 0;
610 
611 //-----------------------------------------------------------------------------------------
612 //
613 // GetConfigurationValue
614 //
615 // Description: gets current selected configuration index
616 
617  virtual UCHAR GetConfigurationValue() = 0;
618 
619 //-----------------------------------------------------------------------------------------
620 //
621 // SubmitIrp
622 //
623 // Description: submits an irp containing an urb
624 
625  virtual NTSTATUS SubmitIrp(PIRP Irp) = 0;
626 
627 //-----------------------------------------------------------------------------------------
628 //
629 // GetConfigurationDescriptors
630 //
631 // Description: returns one or more configuration descriptors
632 
633  virtual VOID GetConfigurationDescriptors(IN PUSB_CONFIGURATION_DESCRIPTOR ConfigDescriptorBuffer,
635  OUT PULONG OutBufferLength) = 0;
636 
637 //-----------------------------------------------------------------------------------------
638 //
639 // Description: returns length of configuration descriptors
640 //
641  virtual ULONG GetConfigurationDescriptorsLength() = 0;
642 
643 //-----------------------------------------------------------------------------------------
644 //
645 // SubmitSetupPacket
646 //
647 // Description: submits an setup packet. The usb device will then create an usb request from it and submit it to the queue
648 
649  virtual NTSTATUS SubmitSetupPacket(IN PUSB_DEFAULT_PIPE_SETUP_PACKET SetupPacket,
651  OUT PVOID Buffer) = 0;
652 
653 //-----------------------------------------------------------------------------------------
654 //
655 // SelectConfiguration
656 //
657 // Description: selects a configuration
658 
659  virtual NTSTATUS SelectConfiguration(IN PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor,
662 
663 //-----------------------------------------------------------------------------------------
664 //
665 // SelectConfiguration
666 //
667 // Description: selects a interface of an configuration
668 
671 
672 //-----------------------------------------------------------------------------------------
673 //
674 // AbortPipe
675 //
676 // Description: aborts all pending requests
677 
678  virtual NTSTATUS AbortPipe(IN PUSB_ENDPOINT_DESCRIPTOR EndpointDescriptor) = 0;
679 
680 //-----------------------------------------------------------------------------------------
681 //
682 // GetMaxPacketSize
683 //
684 // Description: aborts all pending requests
685 
686  virtual UCHAR GetMaxPacketSize() = 0;
687 };
688 
689 typedef IUSBDevice *PUSBDEVICE;
690 
691 #endif
enum _USB_DEVICE_TYPE USB_DEVICE_TYPE
CPPORT Port[4]
Definition: headless.c:34
#define IN
Definition: typedefs.h:38
_Inout_ PUSB_DEVICE_HANDLE _Out_writes_bytes_to_ DeviceDescriptorBufferLength PUCHAR _Inout_ PULONG _Out_writes_bytes_to_ ConfigDescriptorBufferLength PUCHAR ConfigDescriptorBuffer
Definition: hubbusif.h:151
#define DEFINE_ABSTRACT_UNKNOWN()
Definition: ksiface.h:5
IUSBHardwareDevice * PUSBHARDWAREDEVICE
_In_ PIRP _In_ PDEVICE_OBJECT Device
Definition: fatprocs.h:2020
_In_ BOOLEAN Release
Definition: classpnp.h:929
struct _USB_ENDPOINT USB_ENDPOINT
_In_ PIRP Irp
Definition: csq.h:116
USB_ENDPOINT_DESCRIPTOR EndPointDescriptor
LONG NTSTATUS
Definition: precomp.h:26
struct USB_CONFIGURATION * PUSB_CONFIGURATION
KSPIN_LOCK * PKSPIN_LOCK
Definition: env_spec_w32.h:73
ACPI_PHYSICAL_ADDRESS ACPI_SIZE BOOLEAN Warn BOOLEAN Physical UINT32 ACPI_TABLE_HEADER *OutTableHeader ACPI_TABLE_HEADER **OutTable ACPI_HANDLE UINT32 ACPI_WALK_CALLBACK ACPI_WALK_CALLBACK void void **ReturnValue UINT32 ACPI_BUFFER *RetPathPtr ACPI_OBJECT_HANDLER void *Data ACPI_OBJECT_HANDLER void **Data ACPI_STRING ACPI_OBJECT_LIST ACPI_BUFFER *ReturnObjectBuffer ACPI_DEVICE_INFO **ReturnBuffer ACPI_HANDLE Parent
Definition: acpixf.h:722
PDEVICE_OBJECT PhysicalDeviceObject
Definition: btrfs_drv.h:1114
struct _USB_INTERFACE USB_INTERFACE
#define DEFINE_ABSTRACT_USBREQUEST()
_In_opt_ PALLOCATE_FUNCTION Allocate
Definition: exfuncs.h:656
IUSBDevice * PUSBDEVICE
LIST_ENTRY InterfaceList
_In_ PUSB_DEVICE_HANDLE _Out_ PUSHORT DeviceAddress
Definition: hubbusif.h:359
_In_ ULONG BufferLength
Definition: usbdlib.h:225
unsigned char BOOLEAN
static PDRIVER_OBJECT DriverObject
Definition: template.c:42
IDispatchIrp * PDISPATCHIRP
Definition: bufpool.h:45
USB_ENDPOINT EndPoints[1]
enum _USB_DEVICE_SPEED USB_DEVICE_SPEED
IN PVOID IN PVOID IN USHORT IN USHORT IN PINTERFACE Interface
Definition: pci.h:359
const KSDEVICE_DESCRIPTOR DeviceDescriptor
Definition: splitter.c:257
struct _USB_ENDPOINT * PUSB_ENDPOINT
#define DEFINE_ABSTRACT_USBQUEUE()
_Must_inspect_result_ typedef _In_ PHYSICAL_ADDRESS PhysicalAddress
Definition: iotypes.h:1061
_Must_inspect_result_ _Out_ PNDIS_STATUS _Out_ PNDIS_HANDLE ConfigurationHandle
Definition: ndis.h:3944
unsigned char UCHAR
Definition: xmlstorage.h:181
INT GetType(BOOL bLocal, LPOSVERSIONINFOEX osvi, LPSERVER_INFO_102 pBuf102)
Definition: gettype.c:129
DECLARE_INTERFACE_(IRootHCDController, IUnknown)
Definition: typedefs.h:117
IN OUT PLONG IN OUT PLONG Addend IN OUT PLONG IN LONG IN OUT PLONG IN LONG Increment IN PNDIS_RW_LOCK Lock
Definition: CrNtStubs.h:75
IN PVOID IN PVOID IN USHORT IN USHORT Size
Definition: pci.h:359
_Outptr_ PUSB_DEVICE_HANDLE _In_ PUSB_DEVICE_HANDLE _In_ USHORT PortStatus
Definition: hubbusif.h:40
LIST_ENTRY ListEntry
PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor
IN PDEVICE_OBJECT DeviceObject
Definition: fatprocs.h:1560
HWND WINAPI GetParent(_In_ HWND)
IUSBQueue * PUSBQUEUE
_In_ ULONG _Out_opt_ PULONG RequiredLength
Definition: wmifuncs.h:29
IUSBRequest * PUSBREQUEST
BOOL Initialize(HINSTANCE hInstance)
Definition: msconfig.c:341
IRootHCDController * PROOTHDCCONTROLLER
struct _USB_INTERFACE * PUSB_INTERFACE
unsigned int * PULONG
Definition: retypes.h:1
IDMAMemoryManager * PDMAMEMORYMANAGER
#define OUT
Definition: typedefs.h:39
unsigned int ULONG
Definition: retypes.h:1
IHubController * PHUBCONTROLLER
#define DEFINE_ABSTRACT_USBHARDWAREDEVICE()
PUSB_INTERFACE_DESCRIPTOR InterfaceDescriptor
IHCDController * PHCDCONTROLLER