ReactOS 0.4.16-dev-297-gc569aee
fxusbdevice.hpp
Go to the documentation of this file.
1/*++
2
3Copyright (c) Microsoft Corporation
4
5Module Name:
6
7 FxUsbDevice.hpp
8
9Abstract:
10
11Author:
12
13Environment:
14
15 kernel mode only
16
17Revision History:
18
19--*/
20
21#ifndef _FXUSBDEVICE_H_
22#define _FXUSBDEVICE_H_
23
25
26typedef enum _FX_URB_TYPE : UCHAR {
30
33 __in FX_URB_TYPE FxUrbType
34 );
35
37 VOID
38 );
39
43 __in USBD_HANDLE USBDHandle
44 );
45
46 virtual
47 VOID
48 Dispose(
49 VOID
50 );
51
52 virtual
53 VOID
56 );
57
58 VOID
63 );
64
65 virtual
66 VOID
69 );
70
73 VOID
74 );
75
76private:
77 USBD_HANDLE m_USBDHandle;
78
79public:
80
82
83 //
84 // m_Urb will either point to m_UrbLegacy or one allocated by USBD_UrbAllocate
85 //
87
89
91};
92
95 __in FX_URB_TYPE FxUrbType
96 );
97
99 VOID
100 );
101
105 __in USBD_HANDLE USBDHandle
106 );
107
108 virtual
109 VOID
110 Dispose(
111 VOID
112 );
113
114 virtual
115 VOID
118 );
119
120 VOID
124 );
125
128 VOID
129 );
130
134 __in PFX_DRIVER_GLOBALS FxDriverGlobals,
135 __in size_t BufferSize
136 );
137
138private:
139 USBD_HANDLE m_USBDHandle;
140
141public:
142
144
145 //
146 // m_Urb will either point to m_UrbLegacy or one allocated by USBD_UrbAllocate
147 //
149
151
153};
154
156public:
157
158 FxUsbUrb(
159 __in PFX_DRIVER_GLOBALS FxDriverGlobals,
160 __in USBD_HANDLE USBDHandle,
162 __in size_t BufferSize
163 );
164
165protected:
166
167 virtual
168 BOOLEAN
169 Dispose(
170 VOID
171 );
172
173 ~FxUsbUrb();
174
175private:
176
177 USBD_HANDLE m_USBDHandle;
178};
179
180
181#define FX_USB_DEVICE_TAG 'sUfD'
182
183class FxUsbDevice : public FxIoTarget {
184public:
185 friend FxUsbPipe;
187
189 __in PFX_DRIVER_GLOBALS FxDriverGlobals
190 );
191
195 __in ULONG USBDClientContractVersionForWdfClient
196 );
197
203 );
204
207 GetString(
212 __in_opt WDFREQUEST Request = NULL,
214 );
215
216 __inline
217 VOID
220 )
221 {
224 sizeof(m_DeviceDescriptor));
225 }
226
227 VOID
230 );
231
232 __inline
235 VOID
236 )
237 {
238 return m_ConfigHandle;
239 }
240
242 __inline
245 __in PULONG Current
246 )
247 {
248 if (m_QueryBusTime != NULL) {
249 return m_QueryBusTime(m_BusInterfaceContext, Current);
250 }
251 else {
252 return STATUS_UNSUCCESSFUL;
253 }
254 }
255
260 );
261
266 __in PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor,
267 __in_ecount(NumInterfaces)PUSB_INTERFACE_DESCRIPTOR* InterfaceDescriptors,
268 __in ULONG NumInterfaces
269 );
270
275 __in PURB Urb,
276 __in FX_URB_TYPE FxUrbType,
277 __out_opt PUCHAR NumConfiguredInterfaces
278 );
279
282 Deconfig(
283 VOID
284 );
285
291 );
292
297 __in PURB Urb
298 );
299
300 UCHAR
302 VOID
303 )
304 {
305 return m_NumInterfaces;
306 }
307
308 UCHAR
311 );
312
313 WDFUSBPIPE
316 __in UCHAR EndpointNumber
317 );
318
323 __in FxRequestBuffer *RequestBuffer,
326 );
327
333 __in FxRequestBuffer *RequestBuffer
334 );
335
339 VOID
340 );
341
344 Reset(
345 VOID
346 );
347
350 CyclePort(
351 VOID
352 );
353
358 );
359
360 BOOLEAN
362 VOID
363 )
364 {
365 return m_OnUSBD;
366 }
367
370 VOID
371 )
372 {
373 return m_ControlPipe;
374 }
375
379 VOID
380 );
381
387 );
388
394 );
395
401 );
402
406 );
407
408 BOOLEAN
410 VOID
411 )
412 {
414 }
415
416 VOID
418 VOID
419 );
420
421 BOOLEAN
422 IsEnabled(
423 VOID
424 );
425
429 __in
431 __in
436 PVOID CapabilityBuffer,
440 );
441
444 CreateUrb(
447 __out
448 WDFMEMORY* UrbMemory,
450 PURB* Urb
451 );
452
453#ifdef _MSC_VER
454#pragma warning(disable:28285)
455#endif
461 __in
463 __out
464 WDFMEMORY* UrbMemory,
466 PURB* Urb
467 );
468
469 USBD_HANDLE
471 VOID
472 )
473 {
474 return m_USBDHandle;
475 }
476
479 VOID
480 )
481 {
482 return m_UrbType;
483 }
484
488 );
489
490 BOOLEAN
493 );
494
495protected:
497 VOID
498 );
499
500 VOID
503 );
504
505 //
506 // FxIoTarget overrides
507 //
508 virtual
511 Start(
512 VOID
513 );
514
515 virtual
516 VOID
517 Stop(
519 );
520
521 virtual
522 VOID
523 Purge(
525 );
526 // end FxIoTarget overrides
527
528 VOID
530 __in BOOLEAN ForceRemovePipes
531 );
532
533 static
534 VOID
536 __in PLIST_ENTRY PendHead,
537 __in PSINGLE_LIST_ENTRY SentHead
538 );
539
543 );
544
548 __in WDFUSBINTERFACE UsbInterface,
550 );
551
552 VOID
555 );
556
557 _Acquires_lock_(_Global_critical_region_)
558 VOID
559 AcquireInterfaceIterationLock(
560 VOID
561 )
562 {
564 }
565
566 _Releases_lock_(_Global_critical_region_)
567 VOID
568 ReleaseInterfaceIterationLock(
569 VOID
570 )
571 {
573 }
574
575 ULONG
577 VOID
578 );
579
580 VOID
582 __in PURB Urb,
583 __in USHORT NumEndpoints,
585 __in UCHAR SettingNumber
586 );
587
588 virtual
589 BOOLEAN
590 Dispose(
591 VOID
592 );
593
598 );
599
600#if (FX_CORE_MODE == FX_CORE_USER_MODE)
604 __in FxSyncRequest* Request,
606 );
607
611 __inout PUMURB Urb,
613 __in_opt WDFREQUEST Request = NULL,
615 );
616#endif
617
618protected:
619 USBD_HANDLE m_USBDHandle;
620
622
624
626
628
630
632
634
636
638
640
642
644
646
648
650
652
653#if (FX_CORE_MODE == FX_CORE_USER_MODE)
654private:
655 //
656 // Used to format the IWudfIrp for user-mode requests
657 //
659
660 //
661 // Handle to the default USB interface exposed by WinUsb
662 //
663 WINUSB_INTERFACE_HANDLE m_WinUsbHandle;
664#endif
665};
666
667#endif // _FXUSBDEVICE_H_
unsigned char BOOLEAN
LONG NTSTATUS
Definition: precomp.h:26
Definition: bufpool.h:45
__inline PFX_DRIVER_GLOBALS GetDriverGlobals(VOID)
Definition: fxobject.hpp:734
_Must_inspect_result_ NTSTATUS CreateInterfaces(VOID)
_Must_inspect_result_ NTSTATUS SelectConfigAuto(__in PWDF_OBJECT_ATTRIBUTES PipeAttributes)
virtual VOID Purge(__in WDF_IO_TARGET_PURGE_IO_ACTION Action)
_Must_inspect_result_ NTSTATUS Reset(VOID)
WDFUSBPIPE GetInterfacePipeReferenced(__in UCHAR InterfaceNumber, __in UCHAR EndpointNumber)
virtual BOOLEAN Dispose(VOID)
__inline VOID CopyDeviceDescriptor(__out PUSB_DEVICE_DESCRIPTOR UsbDeviceDescriptor)
WINUSB_INTERFACE_HANDLE m_WinUsbHandle
VOID PipesGotoRemoveState(__in BOOLEAN ForceRemovePipes)
USBD_PIPE_HANDLE m_ControlPipe
_Must_inspect_result_ NTSTATUS SelectConfig(__in PWDF_OBJECT_ATTRIBUTES PipesAttributes, __in PURB Urb, __in FX_URB_TYPE FxUrbType, __out_opt PUCHAR NumConfiguredInterfaces)
VOID CleanupInterfacePipesAndDelete(__in FxUsbInterface *UsbInterface)
USB_DEVICE_DESCRIPTOR m_DeviceDescriptor
_Must_inspect_result_ NTSTATUS FormatCycleRequest(__in FxRequestBase *Request)
_Acquires_lock_(_Global_critical_region_) VOID AcquireInterfaceIterationLock(VOID)
_Must_inspect_result_ NTSTATUS IsConnected(VOID)
_Must_inspect_result_ __inline NTSTATUS GetCurrentFrameNumber(__in PULONG Current)
_Must_inspect_result_ NTSTATUS FormatStringRequest(__in FxRequestBase *Request, __in FxRequestBuffer *RequestBuffer, __in UCHAR StringIndex, __in USHORT LangID)
_Must_inspect_result_ NTSTATUS QueryUsbCapability(__in CONST GUID *CapabilityType, __in ULONG CapabilityBufferLength, __drv_when(CapabilityBufferLength==0, __out_opt) __drv_when(CapabilityBufferLength !=0 &&ResultLength==NULL, __out_bcount(CapabilityBufferLength)) __drv_when(CapabilityBufferLength !=0 &&ResultLength !=NULL, __out_bcount_part_opt(CapabilityBufferLength, *ResultLength)) PVOID CapabilityBuffer, __out_opt __drv_when(ResultLength !=NULL, __deref_out_range(<=, CapabilityBufferLength)) PULONG ResultLength)
PINTERFACE_DEREFERENCE m_BusInterfaceDereference
__inline USBD_CONFIGURATION_HANDLE GetConfigHandle(VOID)
_Releases_lock_(_Global_critical_region_) VOID ReleaseInterfaceIterationLock(VOID)
_Must_inspect_result_ NTSTATUS SendSyncUmUrb(__inout PUMURB Urb, __in ULONGLONG Time, __in_opt WDFREQUEST Request=NULL, __in_opt PWDF_REQUEST_SEND_OPTIONS Options=NULL)
PUSB_BUSIFFN_QUERY_BUS_TIME m_QueryBusTime
USBD_VERSION_INFORMATION m_UsbdVersionInformation
_Must_inspect_result_ NTSTATUS GetPortStatus(__out PULONG PortStatus)
USBD_HANDLE m_USBDHandle
IWudfFile * m_pHostTargetFile
~FxUsbDevice(VOID)
BOOLEAN OnUSBD(VOID)
VOID RemoveDeletedInterface(__in FxUsbInterface *Interface)
USBD_PIPE_HANDLE GetControlPipeHandle(VOID)
ULONG GetDefaultMaxTransferSize(VOID)
UCHAR GetInterfaceNumEndpoints(__in UCHAR InterfaceNumber)
BOOLEAN IsObjectDisposedOnRemove(__in FxObject *Object)
static VOID _CleanupPipesRequests(__in PLIST_ENTRY PendHead, __in PSINGLE_LIST_ENTRY SentHead)
__checkReturn NTSTATUS CreateUrb(__in_opt PWDF_OBJECT_ATTRIBUTES Attributes, __out WDFMEMORY *UrbMemory, __deref_opt_out_bcount(sizeof(URB)) PURB *Urb)
_Must_inspect_result_ NTSTATUS SendSyncRequest(__in FxSyncRequest *Request, __in ULONGLONG Time)
_Must_inspect_result_ NTSTATUS CyclePort(VOID)
friend FxUsbPipe
FxUsbInterface * GetInterfaceFromIndex(__in UCHAR InterfaceIndex)
_Must_inspect_result_ NTSTATUS GetConfigDescriptor(__out PVOID ConfigDescriptor, __inout PUSHORT ConfigDescriptorLength)
PUSB_CONFIGURATION_DESCRIPTOR m_ConfigDescriptor
BOOLEAN HasMismatchedInterfacesInConfigDescriptor(VOID)
_Must_inspect_result_ NTSTATUS SelectConfigInterfaces(__in PWDF_OBJECT_ATTRIBUTES PipesAttributes, __in PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor, __in_ecount(NumInterfaces) PUSB_INTERFACE_DESCRIPTOR *InterfaceDescriptors, __in ULONG NumInterfaces)
FX_URB_TYPE m_UrbType
BOOLEAN IsEnabled(VOID)
UCHAR GetNumInterfaces(VOID)
UCHAR m_NumInterfaces
friend FxUsbInterface
FxWaitLockInternal m_InterfaceIterationLock
VOID CancelSentIo(VOID)
ULONG m_HcdPortCapabilities
_Must_inspect_result_ NTSTATUS SelectInterfaceByInterface(__in PWDF_OBJECT_ATTRIBUTES PipesAttributes, __in PUSB_INTERFACE_DESCRIPTOR InterfaceDescriptor)
__checkReturn NTSTATUS CreateIsochUrb(__in_opt PWDF_OBJECT_ATTRIBUTES Attributes, __in ULONG NumberOfIsochPackets, __out WDFMEMORY *UrbMemory, __deref_opt_out_bcount(GET_ISOCH_URB_SIZE(NumberOfIsochPackets)) PURB *Urb)
_Must_inspect_result_ NTSTATUS FormatControlRequest(__in FxRequestBase *Request, __in PWDF_USB_CONTROL_SETUP_PACKET Packet, __in FxRequestBuffer *RequestBuffer)
_Must_inspect_result_ NTSTATUS GetString(__in_ecount(*NumCharacters) PUSHORT String, __in PUSHORT NumCharacters, __in UCHAR StringIndex, __in_opt USHORT LangID, __in_opt WDFREQUEST Request=NULL, __in_opt PWDF_REQUEST_SEND_OPTIONS Options=NULL)
PVOID m_BusInterfaceContext
_Must_inspect_result_ NTSTATUS GetInterfaceNumberFromInterface(__in WDFUSBINTERFACE UsbInterface, __out PUCHAR InterfaceNumber)
FX_URB_TYPE GetFxUrbTypeForRequest(__in FxRequestBase *Request)
_Must_inspect_result_ NTSTATUS SelectInterface(__in PWDF_OBJECT_ATTRIBUTES PipesAttributes, __in PURB Urb)
_Must_inspect_result_ NTSTATUS InitDevice(__in ULONG USBDClientContractVersionForWdfClient)
_Must_inspect_result_ NTSTATUS SelectConfigSingle(__in PWDF_OBJECT_ATTRIBUTES PipeAttributes, __in PWDF_USB_DEVICE_SELECT_CONFIG_PARAMS Params)
_Must_inspect_result_ NTSTATUS Deconfig(VOID)
FxUsbInterface ** m_Interfaces
FX_URB_TYPE GetUrbType(VOID)
VOID FormatInterfaceSelectSettingUrb(__in PURB Urb, __in USHORT NumEndpoints, __in UCHAR InterfaceNumber, __in UCHAR SettingNumber)
FxUsbInterface * GetInterfaceFromNumber(__in UCHAR InterfaceNumber)
_Must_inspect_result_ NTSTATUS SelectConfigMulti(__in PWDF_OBJECT_ATTRIBUTES PipeAttributes, __in PWDF_USB_DEVICE_SELECT_CONFIG_PARAMS Params)
USBD_HANDLE GetUSBDHandle(VOID)
_Must_inspect_result_ NTSTATUS SelectConfigDescriptor(__in PWDF_OBJECT_ATTRIBUTES PipeAttributes, __in PWDF_USB_DEVICE_SELECT_CONFIG_PARAMS Params)
BOOLEAN m_OnUSBD
USBD_CONFIGURATION_HANDLE m_ConfigHandle
BOOLEAN m_MismatchedInterfacesInConfigDescriptor
USBD_HANDLE m_USBDHandle
virtual BOOLEAN Dispose(VOID)
#define __out_opt
Definition: dbghelp.h:65
#define __in_ecount(x)
Definition: dbghelp.h:47
#define __in
Definition: dbghelp.h:35
#define __out_bcount(x)
Definition: dbghelp.h:68
#define __in_bcount(x)
Definition: dbghelp.h:41
#define __inout
Definition: dbghelp.h:50
#define __in_opt
Definition: dbghelp.h:38
#define __out
Definition: dbghelp.h:62
#define NULL
Definition: types.h:112
VOID(WINAPI * PINTERFACE_DEREFERENCE)(PVOID Context)
Definition: precomp.h:16
#define __drv_when(cond, annotes)
Definition: driverspecs.h:335
return pTarget Start()
return pRequest GetInformation()
_FX_URB_TYPE
Definition: fxusbdevice.hpp:26
@ FxUrbTypeLegacy
Definition: fxusbdevice.hpp:27
@ FxUrbTypeUsbdAllocated
Definition: fxusbdevice.hpp:28
enum _FX_URB_TYPE FX_URB_TYPE
_Outptr_ PUSB_DEVICE_HANDLE _In_ PUSB_DEVICE_HANDLE _In_ USHORT PortStatus
Definition: hubbusif.h:42
_In_opt_ PVOID _Out_ BOOLEAN * Stop
Definition: ldrtypes.h:241
static PLARGE_INTEGER Time
Definition: time.c:105
_In_ NDIS_HANDLE _In_ PNDIS_PACKET Packet
Definition: ndis.h:1549
#define _Must_inspect_result_
Definition: no_sal2.h:62
#define CONST
Definition: pedump.c:81
unsigned short USHORT
Definition: pedump.c:61
#define __checkReturn
Definition: sal_old.h:113
#define __deref_out_range(x, y)
Definition: sal_old.h:220
#define __out_bcount_part_opt(size, length)
Definition: sal_old.h:281
#define __deref_opt_out_bcount(size)
Definition: sal_old.h:184
_URB_CONTROL_TRANSFER * m_Urb
Definition: fxusbdevice.hpp:86
virtual VOID ReleaseAndRestore(__in FxRequestBase *Request)
USBD_STATUS GetUsbdStatus(VOID)
_URB_CONTROL_TRANSFER m_UrbLegacy
Definition: fxusbdevice.hpp:81
virtual VOID CopyParameters(__in FxRequestBase *Request)
__checkReturn NTSTATUS AllocateUrb(__in USBD_HANDLE USBDHandle)
Definition: fxusbdevice.cpp:66
VOID StoreAndReferenceMemory(__in FxUsbDevice *Device, __in FxRequestBuffer *Buffer, __in PWDF_USB_CONTROL_SETUP_PACKET SetupPacket)
virtual VOID Dispose(VOID)
Definition: fxusbdevice.cpp:88
virtual VOID Dispose(VOID)
VOID SetUrbInfo(__in UCHAR StringIndex, __in USHORT LangID)
PUSB_STRING_DESCRIPTOR m_StringDescriptor
virtual VOID CopyParameters(__in FxRequestBase *Request)
_Must_inspect_result_ NTSTATUS AllocateDescriptor(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in size_t BufferSize)
USBD_STATUS GetUsbdStatus(VOID)
__checkReturn NTSTATUS AllocateUrb(__in USBD_HANDLE USBDHandle)
_URB_CONTROL_DESCRIPTOR_REQUEST m_UrbLegacy
_URB_CONTROL_DESCRIPTOR_REQUEST * m_Urb
Definition: typedefs.h:120
Definition: ntbasedef.h:636
Definition: umusb.h:173
Definition: usb.h:529
uint32_t * PULONG
Definition: typedefs.h:59
uint16_t * PUSHORT
Definition: typedefs.h:56
#define RtlCopyMemory(Destination, Source, Length)
Definition: typedefs.h:263
unsigned char * PUCHAR
Definition: typedefs.h:53
uint32_t ULONG
Definition: typedefs.h:59
uint64_t ULONGLONG
Definition: typedefs.h:67
#define STATUS_UNSUCCESSFUL
Definition: udferr_usr.h:132
LONG USBD_STATUS
Definition: usb.h:165
_Must_inspect_result_ NTSTATUS(USB_BUSIFFN * PUSB_BUSIFFN_QUERY_BUS_TIME)(_In_ PVOID, _Out_opt_ PULONG)
Definition: usbbusif.h:33
_In_ PVOID _In_ LONG InterfaceNumber
Definition: usbdlib.h:169
_Must_inspect_result_ _In_ WDFDEVICE Device
Definition: wdfchildlist.h:474
_Must_inspect_result_ _In_ WDFCOLLECTION _In_ WDFOBJECT Object
_Must_inspect_result_ _In_ WDFDMAENABLER _In_ _In_opt_ PWDF_OBJECT_ATTRIBUTES Attributes
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG _Out_ PULONG ResultLength
Definition: wdfdevice.h:3776
_In_ PWDFDEVICE_INIT _In_ PWDF_REMOVE_LOCK_OPTIONS Options
Definition: wdfdevice.h:3534
_Must_inspect_result_ _In_ WDFDEVICE _In_ WDFSTRING String
Definition: wdfdevice.h:2433
_In_ WDFREQUEST Request
Definition: wdfdevice.h:547
_Must_inspect_result_ _In_ WDFDEVICE _In_ LPCGUID _Out_ PINTERFACE Interface
Definition: wdffdo.h:465
enum _WDF_IO_TARGET_PURGE_IO_ACTION WDF_IO_TARGET_PURGE_IO_ACTION
enum _WDF_IO_TARGET_SENT_IO_ACTION WDF_IO_TARGET_SENT_IO_ACTION
_In_ WDFIOTARGET _In_ _Strict_type_match_ WDF_IO_TARGET_SENT_IO_ACTION Action
Definition: wdfiotarget.h:510
_In_ WDFMEMORY _Out_opt_ size_t * BufferSize
Definition: wdfmemory.h:254
_In_ WDFIOTARGET _In_ PWDF_REQUEST_COMPLETION_PARAMS Params
Definition: wdfrequest.h:308
_In_ WDFREQUEST _In_ NTSTATUS _In_ ULONG_PTR Information
Definition: wdfrequest.h:1049
_In_ WDFUSBINTERFACE UsbInterface
Definition: wdfusb.h:2276
_Must_inspect_result_ _In_ WDFUSBDEVICE _In_opt_ PWDF_OBJECT_ATTRIBUTES PipeAttributes
Definition: wdfusb.h:1242
_In_ WDFUSBINTERFACE _In_ UCHAR _Out_ PUSB_INTERFACE_DESCRIPTOR InterfaceDescriptor
Definition: wdfusb.h:2334
_Must_inspect_result_ _In_ WDFUSBDEVICE _In_ CONST GUID _In_ ULONG CapabilityBufferLength
Definition: wdfusb.h:1615
_In_ WDFUSBDEVICE _Out_ PUSB_DEVICE_DESCRIPTOR UsbDeviceDescriptor
Definition: wdfusb.h:1008
_Must_inspect_result_ _In_ WDFUSBDEVICE _In_ WDFREQUEST _In_ WDFMEMORY UrbMemory
Definition: wdfusb.h:1576
_Must_inspect_result_ _In_ WDFUSBDEVICE _Out_writes_bytes_to_opt_ ConfigDescriptorLength PVOID ConfigDescriptor
Definition: wdfusb.h:1036
_Must_inspect_result_ _In_ WDFUSBDEVICE _In_opt_ PWDF_OBJECT_ATTRIBUTES _In_ ULONG NumberOfIsochPackets
Definition: wdfusb.h:1703
_Must_inspect_result_ _In_ WDFUSBDEVICE _Out_writes_bytes_to_opt_ ConfigDescriptorLength PVOID _Inout_ PUSHORT ConfigDescriptorLength
Definition: wdfusb.h:1040
_Must_inspect_result_ _In_ WDFUSBDEVICE _In_opt_ WDFREQUEST _In_opt_ PWDF_REQUEST_SEND_OPTIONS _Out_writes_opt_ NumCharacters PUSHORT _Inout_ PUSHORT NumCharacters
Definition: wdfusb.h:1078
_Must_inspect_result_ _In_ WDFUSBDEVICE _In_ CONST GUID * CapabilityType
Definition: wdfusb.h:1613
_Must_inspect_result_ _In_ WDFUSBDEVICE _In_opt_ WDFREQUEST _In_opt_ PWDF_REQUEST_SEND_OPTIONS _Out_writes_opt_ NumCharacters PUSHORT _Inout_ PUSHORT _In_ UCHAR StringIndex
Definition: wdfusb.h:1080
_Must_inspect_result_ _In_ WDFUSBDEVICE _In_opt_ WDFREQUEST _In_opt_ PWDF_REQUEST_SEND_OPTIONS _Out_writes_opt_ NumCharacters PUSHORT _Inout_ PUSHORT _In_ UCHAR _In_opt_ USHORT LangID
Definition: wdfusb.h:1083
_In_ WDFUSBDEVICE _In_ UCHAR InterfaceIndex
Definition: wdfusb.h:2462
_Must_inspect_result_ _In_ WDFUSBDEVICE _In_opt_ WDFREQUEST _In_opt_ PWDF_REQUEST_SEND_OPTIONS _In_ PWDF_USB_CONTROL_SETUP_PACKET SetupPacket
Definition: wdfusb.h:1337
_Must_inspect_result_ _In_ WDFUSBINTERFACE _In_opt_ PWDF_OBJECT_ATTRIBUTES PipesAttributes
Definition: wdfusb.h:2390
unsigned char UCHAR
Definition: xmlstorage.h:181