ReactOS 0.4.16-dev-1946-g52006dd
fxusbpipeapi.cpp
Go to the documentation of this file.
1/*++
2
3Copyright (c) Microsoft Corporation
4
5Module Name:
6
7 FxUsbPipeAPI.cpp
8
9Abstract:
10
11
12Author:
13
14Environment:
15
16 Both kernel and user mode
17
18Revision History:
19
20--*/
21
22#include "fxusbpch.hpp"
23
24extern "C" {
25#if defined(EVENT_TRACING)
26#include "FxUsbPipeAPI.tmh"
27#endif
28}
29
30//
31// extern "C" the whole file since we are exporting the APIs by name
32//
33extern "C" {
34
36VOID
39WDFEXPORT(WdfUsbTargetPipeGetInformation)(
40 __in
41 PWDF_DRIVER_GLOBALS DriverGlobals,
42 __in
43 WDFUSBPIPE Pipe,
44 __out
46 )
47{
48 DDI_ENTRY();
49
52
54 Pipe,
56 (PVOID*) &pUsbPipe,
58
60
62}
63
68WDFEXPORT(WdfUsbTargetPipeIsInEndpoint)(
69 __in
70 PWDF_DRIVER_GLOBALS DriverGlobals,
71 __in
72 WDFUSBPIPE Pipe
73 )
74{
75 DDI_ENTRY();
76
78
80 Pipe,
82 (PVOID*) &pUsbPipe);
83
85}
86
91WDFEXPORT(WdfUsbTargetPipeIsOutEndpoint)(
92 __in
93 PWDF_DRIVER_GLOBALS DriverGlobals,
94 __in
95 WDFUSBPIPE Pipe
96 )
97{
98 DDI_ENTRY();
99
101
103 Pipe,
105 (PVOID*) &pUsbPipe);
106
108}
109
112WDFAPI
113NTAPI
114WDFEXPORT(WdfUsbTargetPipeGetType)(
115 __in
116 PWDF_DRIVER_GLOBALS DriverGlobals,
117 __in
118 WDFUSBPIPE Pipe
119 )
120{
121 DDI_ENTRY();
122
124
126 Pipe,
128 (PVOID*) &pUsbPipe);
129
130 return pUsbPipe->GetType();
131}
132
134VOID
135WDFAPI
136NTAPI
137WDFEXPORT(WdfUsbTargetPipeSetNoMaximumPacketSizeCheck)(
138 __in
139 PWDF_DRIVER_GLOBALS DriverGlobals,
140 __in
141 WDFUSBPIPE Pipe
142 )
143{
144 DDI_ENTRY();
145
148
150 Pipe,
152 (PVOID*) &pUsbPipe,
154
156 "WDFUSBPIPE %p", Pipe);
157
159}
160
164WDFAPI
165NTAPI
166WDFEXPORT(WdfUsbTargetPipeWriteSynchronously)(
167 __in
168 PWDF_DRIVER_GLOBALS DriverGlobals,
169 __in
170 WDFUSBPIPE Pipe,
172 WDFREQUEST Request,
179 )
180{
181 DDI_ENTRY();
182
185 "WDFUSBPIPE %p", Pipe);
186
187 return FxUsbPipe::_SendTransfer(GetFxDriverGlobals(DriverGlobals),
188 Pipe,
189 Request,
193 0);
194}
195
199WDFAPI
200NTAPI
201WDFEXPORT(WdfUsbTargetPipeFormatRequestForWrite)(
202 __in
203 PWDF_DRIVER_GLOBALS DriverGlobals,
204 __in
205 WDFUSBPIPE Pipe,
206 __in
207 WDFREQUEST Request,
209 WDFMEMORY WriteMemory,
212 )
213{
214 DDI_ENTRY();
215
217 "WDFUSBPIPE %p, WDFREQUEST %p, WDFMEMORY %p",
219
221 Pipe,
222 Request,
225 0);
226}
227
231WDFAPI
232NTAPI
233WDFEXPORT(WdfUsbTargetPipeReadSynchronously)(
234 __in
235 PWDF_DRIVER_GLOBALS DriverGlobals,
236 __in
237 WDFUSBPIPE Pipe,
239 WDFREQUEST Request,
246 )
247{
248 DDI_ENTRY();
249
251 "WDFUSBPIPE %p", Pipe);
252
254 GetFxDriverGlobals(DriverGlobals),
255 Pipe,
256 Request,
259 BytesRead,
261 );
262}
263
267WDFAPI
268NTAPI
269WDFEXPORT(WdfUsbTargetPipeFormatRequestForRead)(
270 __in
271 PWDF_DRIVER_GLOBALS DriverGlobals,
272 __in
273 WDFUSBPIPE Pipe,
274 __in
275 WDFREQUEST Request,
277 WDFMEMORY ReadMemory,
280 )
281{
282 DDI_ENTRY();
283
286 "WDFUSBPIPE %p, WDFREQUEST %p, WDFMEMORY %p",
288
290 GetFxDriverGlobals(DriverGlobals),
291 Pipe,
292 Request,
296 );
297}
298
302WDFAPI
303NTAPI
304WDFEXPORT(WdfUsbTargetPipeConfigContinuousReader)(
305 __in
306 PWDF_DRIVER_GLOBALS DriverGlobals,
307 __in
308 WDFUSBPIPE Pipe,
309 __in
311 )
312{
313 DDI_ENTRY();
314
318 size_t total;
319
321 Pipe,
323 (PVOID*) &pUsbPipe,
325
327
330
332 "Config %p incorrect size %d, expected %d %!STATUS!",
334 status);
335
336 return status;
337 }
338
339 if (Config->EvtUsbTargetPipeReadComplete == NULL) {
343 "NULL EvtUsbTargetPipeReadComplete not allowed %!STATUS!", status);
344 return status;
345 }
346
347 if (Config->TransferLength == 0) {
350 "TransferLength of 0 not allowed %!STATUS!", status);
351 return status;
352 }
353
354 status = RtlSizeTAdd(Config->HeaderLength,
355 Config->TransferLength,
356 &total);
357
361 "HeaderLength + TransferLength overflow %!STATUS!", status);
362 return status;
363 }
364
365 status = RtlSizeTAdd(total,
366 Config->TrailerLength,
367 &total);
368
369 if (!NT_SUCCESS(status)) {
372 "HeaderLength + TransferLength + TrailerLength overflow %!STATUS!",
373 status);
374 return status;
375 }
376
377 //
378 // Internally WDF will assign a parent to the memory, so do not allow the driver
379 // to do so.
380 //
382 Config->BufferAttributes,
384 if (!NT_SUCCESS(status)) {
385 return status;
386 }
387
388 //
389 // Only bulk or interrrupt is allowed for a continous reader
390 //
394
397 "WDFUSBPIPE %p type %!WDF_USB_PIPE_TYPE!, only bulk or interrupt "
398 "pipes can be configured for continous readers, %!STATUS!",
400
401 return status;
402 }
403
406
409 "WDFUSBPIPE %p, wrong direction for continuous reader, %!STATUS!",
410 Pipe, status);
411
412 return status;
413 }
414
415 status = pUsbPipe->ValidateTransferLength(Config->TransferLength);
416 if (!NT_SUCCESS(status)) {
419 "TransferLength %I64d not a valid transer length (not integral of max "
420 "packet size %d) %!STATUS!", Config->TransferLength,
422 return status;
423 }
424
426
427 return status;
428}
429
433WDFAPI
434NTAPI
435WDFEXPORT(WdfUsbTargetPipeAbortSynchronously)(
436 __in
437 PWDF_DRIVER_GLOBALS DriverGlobals,
438 __in
439 WDFUSBPIPE Pipe,
441 WDFREQUEST Request,
444 )
445{
446 DDI_ENTRY();
447
451
453 Pipe,
455 (PVOID*) &pUsbPipe,
457
459
461
462 //
463 // FxSyncRequest always succeesds for KM but can fail for UM.
464 //
465 status = request.Initialize();
466 if (!NT_SUCCESS(status)) {
468 "Failed to initialize FxSyncRequest");
469 return status;
470 }
471
473 "Pipe %p", Pipe);
474
476 if (!NT_SUCCESS(status)) {
477 return status;
478 }
479
481 if (!NT_SUCCESS(status)) {
483 "Invalid request options");
484 return status;
485 }
486
487 status = pUsbPipe->FormatAbortRequest(request.m_TrueRequest);
491 "WDFUSBPIPE %p, WDFREQUEST %p being submitted",
492 Pipe, request.m_TrueRequest->GetTraceObjectHandle());
493
495 }
496
498 "WDFUSBPIPE %p, %!STATUS!", Pipe, status);
499
500 return status;
501}
502
506WDFAPI
507NTAPI
508WDFEXPORT(WdfUsbTargetPipeFormatRequestForAbort)(
509 __in
510 PWDF_DRIVER_GLOBALS DriverGlobals,
511 __in
512 WDFUSBPIPE Pipe,
513 __in
514 WDFREQUEST Request
515 )
516{
517 DDI_ENTRY();
518
523
525 Pipe,
527 (PVOID*) &pUsbPipe,
529
531 "Pipe %p, Request %p", Pipe, Request);
532
534 Request,
536 (PVOID*) &pRequest);
537
539
541 "Pipe %p, Request %p, status %!STATUS!",
543
544 return status;
545}
546
550WDFAPI
551NTAPI
552WDFEXPORT(WdfUsbTargetPipeResetSynchronously)(
553 __in
554 PWDF_DRIVER_GLOBALS DriverGlobals,
555 __in
556 WDFUSBPIPE Pipe,
558 WDFREQUEST Request,
561 )
562{
563 DDI_ENTRY();
564
568
570 Pipe,
572 (PVOID*) &pUsbPipe,
574
576
577 FxSyncRequest request(pFxDriverGlobals, &context, Request);
578
579 //
580 // FxSyncRequest always succeesds for KM but can fail for UM.
581 //
582 status = request.Initialize();
583 if (!NT_SUCCESS(status)) {
585 "Failed to initialize FxSyncRequest");
586 return status;
587 }
588
590 "WDFUSBPIPE %p reset", Pipe);
591
593 if (!NT_SUCCESS(status)) {
594 return status;
595 }
596
598 if (!NT_SUCCESS(status)) {
600 "Invalid request options");
601 return status;
602 }
603
604 status = pUsbPipe->FormatResetRequest(request.m_TrueRequest);
605
606 if (NT_SUCCESS(status)) {
609 "WDFUSBPIPE %p, WDFREQUEST %p being submitted",
610 Pipe, request.m_TrueRequest->GetTraceObjectHandle());
611
613
614 //
615 // Even if the previous state of the target was stopped let this IO go through by
616 // ignoring target state.
617 //
619 }
620
622 "WDFUSBPIPE %p reset, %!STATUS!", Pipe, status);
623
624 return status;
625}
626
630WDFAPI
631NTAPI
632WDFEXPORT(WdfUsbTargetPipeFormatRequestForReset)(
633 __in
634 PWDF_DRIVER_GLOBALS DriverGlobals,
635 __in
636 WDFUSBPIPE Pipe,
637 __in
638 WDFREQUEST Request
639 )
640{
641 DDI_ENTRY();
642
647
649 Pipe,
651 (PVOID*) &pUsbPipe,
653
655 "Pipe %p, Request %p", Pipe, Request);
656
658 Request,
660 (PVOID*) &pRequest);
661
663
665 "Pipe %p, Request %p = 0x%x",
667
668 return status;
669}
670
674WDFAPI
675NTAPI
676WDFEXPORT(WdfUsbTargetPipeSendUrbSynchronously)(
677 __in
678 PWDF_DRIVER_GLOBALS DriverGlobals,
679 __in
680 WDFUSBPIPE Pipe,
682 WDFREQUEST Request,
685 __in_xcount("union bug in SAL")
686 PURB Urb
687 )
688{
689 DDI_ENTRY();
690
695
697 Pipe,
699 (PVOID*) &pUsbPipe,
701
703 FxSyncRequest request(pFxDriverGlobals, &context, Request);
704
705 //
706 // FxSyncRequest always succeesds for KM but can fail for UM.
707 //
708 status = request.Initialize();
709 if (!NT_SUCCESS(status)) {
711 "Failed to initialize FxSyncRequest");
712 return status;
713 }
714
716 "WDFUSBPIPE %p, Urb %p", Pipe, Urb);
717
719
721 if (!NT_SUCCESS(status)) {
722 return status;
723 }
724
726 if (!NT_SUCCESS(status)) {
727 return status;
728 }
729
730 buf.SetBuffer(Urb, 0);
731
733 pUsbPipe,
734 request.m_TrueRequest,
735 &buf,
738
739 if (NT_SUCCESS(status)) {
742 "WDFUSBPIPE %p, WDFREQUEST %p being submitted",
743 Pipe, request.m_TrueRequest->GetTraceObjectHandle());
744
746 }
747
749 "WDFUSBPIPE %p, Urb %p, %!STATUS!",
750 Pipe, Urb, status);
751
752 return status;
753}
754
758WDFAPI
759NTAPI
760WDFEXPORT(WdfUsbTargetPipeFormatRequestForUrb)(
761 __in
762 PWDF_DRIVER_GLOBALS DriverGlobals,
763 __in
764 WDFUSBPIPE Pipe,
765 __in
766 WDFREQUEST Request,
767 __in
768 WDFMEMORY UrbMemory,
771 )
772{
773 DDI_ENTRY();
774
782
784 Pipe,
786 (PVOID*) &pUsbPipe,
788
790 "Pipe %p, Request %p, Memory %p",
792
794 UrbMemory,
796 (PVOID*) &pMemory);
797
799 Request,
801 (PVOID*) &pRequest);
802
804 if (!NT_SUCCESS(status)) {
805 return status;
806 }
807
811 }
812
813 if (bufferSize < sizeof(_URB_HEADER)) {
816 "UrbMemory %p buffer size, %I64d, smaller then "
817 "_URB_HEADER, %!STATUS!", UrbMemory,
819 return status;
820 }
821
822 buf.SetMemory(pMemory, UrbOffsets);
823
825 pUsbPipe,
826 pRequest,
827 &buf,
830
831 if (NT_SUCCESS(status)) {
832 FxUsbUrbContext* pContext;
833 pContext = (FxUsbUrbContext*) pRequest->GetContext();
834
836 pContext->m_UsbParameters.Parameters.PipeUrb.Buffer = UrbMemory;
837 }
838
840 "Pipe %p, Request %p, Memory %p, status %!STATUS!",
842
843 return status;
844}
845
848WDFAPI
849NTAPI
850WDFEXPORT(WdfUsbTargetPipeWdmGetPipeHandle)(
851 __in
852 PWDF_DRIVER_GLOBALS DriverGlobals,
853 __in
854 WDFUSBPIPE UsbPipe
855 )
856/*++
857
858Routine Description:
859 Returns the underlying WDM USBD pipe handle
860
861Arguments:
862 UsbPipe - the WDF pipe whose WDM handle will be returned
863
864Return Value:
865 valid handle value or NULL on error
866
867 --*/
868{
869 DDI_ENTRY();
870
872
874 UsbPipe,
876 (PVOID*) &pUsbPipe);
877
879}
880
881} // extern "C"
unsigned char BOOLEAN
LONG NTSTATUS
Definition: precomp.h:26
VOID CancelSentIo(VOID)
_Must_inspect_result_ NTSTATUS SubmitSync(__in FxRequestBase *Request, __in_opt PWDF_REQUEST_SEND_OPTIONS Options=NULL, __out_opt PULONG Action=NULL)
_Must_inspect_result_ NTSTATUS SubmitSyncRequestIgnoreTargetState(__in FxRequestBase *Request, __in_opt PWDF_REQUEST_SEND_OPTIONS RequestOptions)
__inline FxRequestContext * GetContext(VOID)
FX_URB_TYPE GetUrbType(VOID)
Definition: fxusbpipe.hpp:676
BOOLEAN IsType(__in WDF_USB_PIPE_TYPE Type)
__inline BOOLEAN IsInEndpoint(VOID)
Definition: fxusbpipe.hpp:513
USBD_HANDLE GetUSBDHandle(VOID)
Definition: fxusbpipe.hpp:668
WDF_USB_PIPE_TYPE GetType(VOID)
__inline BOOLEAN IsOutEndpoint(VOID)
Definition: fxusbpipe.hpp:531
_Must_inspect_result_ NTSTATUS FormatResetRequest(__in FxRequestBase *Request)
Definition: fxusbpipe.cpp:1785
_Must_inspect_result_ NTSTATUS FormatAbortRequest(__in FxRequestBase *Request)
Definition: fxusbpipe.cpp:1712
VOID GetInformation(__out PWDF_USB_PIPE_INFORMATION PipeInformation)
_Must_inspect_result_ NTSTATUS ValidateTransferLength(__in size_t Length)
Definition: fxusbpipe.hpp:568
static _Must_inspect_result_ NTSTATUS _SendTransfer(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in WDFUSBPIPE Pipe, __in_opt WDFREQUEST Request, __in_opt PWDF_REQUEST_SEND_OPTIONS RequestOptions, __in_opt PWDF_MEMORY_DESCRIPTOR MemoryDescriptor, __out_opt PULONG BytesTransferred, __in ULONG Flags)
Definition: fxusbpipe.cpp:1627
static _Must_inspect_result_ NTSTATUS _FormatTransfer(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in WDFUSBPIPE Pipe, __in WDFREQUEST Request, __in_opt WDFMEMORY TransferMemory, __in_opt PWDFMEMORY_OFFSET TransferOffsets, __in ULONG Flags)
Definition: fxusbpipe.cpp:1538
ULONG GetMaxPacketSize(VOID)
Definition: fxusbpipe.hpp:555
__inline VOID SetNoCheckPacketSize(VOID)
Definition: fxusbpipe.hpp:480
USBD_PIPE_HANDLE WdmGetPipeHandle(VOID)
Definition: fxusbpipe.hpp:634
_Must_inspect_result_ NTSTATUS InitContinuousReader(__in PWDF_USB_CONTINUOUS_READER_CONFIG Config, __in size_t TotalBufferLength)
Definition: fxusbpipe.cpp:1465
virtual size_t GetBufferSize(VOID)=0
_Must_inspect_result_ NTSTATUS ValidateMemoryOffsets(__in_opt PWDFMEMORY_OFFSET Offsets)
Definition: ifxmemory.hpp:105
#define __out_opt
Definition: dbghelp.h:65
#define __in
Definition: dbghelp.h:35
#define __in_opt
Definition: dbghelp.h:38
#define __out
Definition: dbghelp.h:62
#define TRACINGIOTARGET
Definition: dbgtrace.h:72
#define NULL
Definition: types.h:112
#define FALSE
Definition: types.h:117
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:33
#define __drv_maxIRQL(irql)
Definition: driverspecs.h:291
#define PASSIVE_LEVEL
Definition: env_spec_w32.h:693
#define DISPATCH_LEVEL
Definition: env_spec_w32.h:696
__inline PFX_DRIVER_GLOBALS GetFxDriverGlobals(__in PWDF_DRIVER_GLOBALS DriverGlobals)
Definition: fxglobals.h:597
#define DDI_ENTRY()
Definition: fxglobalskm.h:56
#define WDFEXPORT(a)
Definition: fxmacros.hpp:157
#define FxPointerNotNull(FxDriverGlobals, Ptr)
Definition: fxmacros.hpp:253
NTSTATUS __inline FxValidateRequestOptions(_In_ PFX_DRIVER_GLOBALS FxDriverGlobals, _In_ PWDF_REQUEST_SEND_OPTIONS Options, _In_opt_ FxRequestBase *Request=NULL)
@ FX_TYPE_IO_TARGET_USB_PIPE
Definition: fxtypes.h:103
@ IFX_TYPE_MEMORY
Definition: fxtypes.h:55
@ FX_TYPE_REQUEST
Definition: fxtypes.h:53
@ FxUrbTypeLegacy
Definition: fxusbdevice.hpp:27
_Must_inspect_result_ __in WDFUSBPIPE __in WDFREQUEST __in WDFMEMORY __in_opt PWDFMEMORY_OFFSET UrbOffsets
__in WDFUSBPIPE __out PWDF_USB_PIPE_INFORMATION PipeInformation
_Must_inspect_result_ __in WDFUSBPIPE __in PWDF_USB_CONTINUOUS_READER_CONFIG Config
FxUsbPipe * pUsbPipe
_Must_inspect_result_ __in WDFUSBPIPE __in WDFREQUEST __in_opt WDFMEMORY WriteMemory
_Must_inspect_result_ __in WDFUSBPIPE __in_opt WDFREQUEST __in_opt PWDF_REQUEST_SEND_OPTIONS __in_opt PWDF_MEMORY_DESCRIPTOR __out_opt PULONG BytesWritten
FxUsbPipeRequestContext context(FxUrbTypeLegacy)
_Must_inspect_result_ __in WDFUSBPIPE __in WDFREQUEST __in_opt WDFMEMORY __in_opt PWDFMEMORY_OFFSET WriteOffsets
size_t total
_Must_inspect_result_ __in WDFUSBPIPE __in WDFREQUEST __in WDFMEMORY UrbMemory
__in WDFUSBPIPE UsbPipe
_Must_inspect_result_ __in WDFUSBPIPE __in WDFREQUEST __in_opt WDFMEMORY __in_opt PWDFMEMORY_OFFSET ReadOffsets
_Must_inspect_result_ __in WDFUSBPIPE __in_opt WDFREQUEST __in_opt PWDF_REQUEST_SEND_OPTIONS RequestOptions
_Must_inspect_result_ __in WDFUSBPIPE __in_opt WDFREQUEST Request
DoTraceLevelMessage(pFxDriverGlobals, TRACE_LEVEL_VERBOSE, TRACINGIOTARGET, "WDFUSBPIPE %p", Pipe)
FxObjectHandleGetPtr(GetFxDriverGlobals(DriverGlobals), Pipe, FX_TYPE_IO_TARGET_USB_PIPE,(PVOID *) &pUsbPipe)
FxRequestBuffer buf
NTSTATUS status
IFxMemory * pMemory
__in WDFUSBPIPE Pipe
FxRequest * pRequest
_Must_inspect_result_ __in WDFUSBPIPE __in WDFREQUEST __in_opt WDFMEMORY ReadMemory
size_t bufferSize
_Must_inspect_result_ __in WDFUSBPIPE __in_opt WDFREQUEST __in_opt PWDF_REQUEST_SEND_OPTIONS __in_opt PWDF_MEMORY_DESCRIPTOR MemoryDescriptor
_Must_inspect_result_ __in WDFUSBPIPE __in_opt WDFREQUEST __in_opt PWDF_REQUEST_SEND_OPTIONS __in_opt PWDF_MEMORY_DESCRIPTOR __out_opt PULONG BytesRead
FxObjectHandleGetPtrAndGlobals(GetFxDriverGlobals(DriverGlobals), Pipe, FX_TYPE_IO_TARGET_USB_PIPE,(PVOID *) &pUsbPipe, &pFxDriverGlobals)
PFX_DRIVER_GLOBALS pFxDriverGlobals
@ FX_VALIDATE_OPTION_PARENT_NOT_ALLOWED
_Must_inspect_result_ NTSTATUS FxValidateObjectAttributes(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in PWDF_OBJECT_ATTRIBUTES Attributes, __in ULONG Flags=FX_VALIDATE_OPTION_NONE_SPECIFIED)
__inline NTSTATUS FxVerifierCheckIrqlLevel(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in KIRQL Irql)
Definition: fxverifier.h:158
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
#define _Must_inspect_result_
Definition: no_sal2.h:62
#define __in_xcount(size)
Definition: specstrings.h:109
#define TRACE_LEVEL_VERBOSE
Definition: storswtr.h:30
#define TRACE_LEVEL_ERROR
Definition: storswtr.h:27
VOID SetUsbType(__in WDF_USB_REQUEST_TYPE Type)
WDF_USB_REQUEST_COMPLETION_PARAMS m_UsbParameters
Definition: usb.h:529
size_t BufferOffset
Definition: wdfmemory.h:65
union _WDF_USB_REQUEST_COMPLETION_PARAMS::@4014 Parameters
struct _WDF_USB_REQUEST_COMPLETION_PARAMS::@4014::@4020 PipeUrb
Definition: http.c:7252
Definition: tftpd.h:86
Definition: ps.c:97
uint32_t * PULONG
Definition: typedefs.h:59
#define NTAPI
Definition: typedefs.h:36
#define STATUS_INVALID_DEVICE_REQUEST
Definition: udferr_usr.h:138
#define STATUS_INVALID_PARAMETER
Definition: udferr_usr.h:135
#define STATUS_INFO_LENGTH_MISMATCH
Definition: udferr_usr.h:133
#define USBD_TRANSFER_DIRECTION_IN
Definition: usb.h:160
#define USBD_SHORT_TRANSFER_OK
Definition: usb.h:154
_In_ PIO_STACK_LOCATION _In_ PURB Urb
Definition: usbdlib.h:267
NTSTATUS FxFormatUrbRequest(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in FxIoTarget *Target, __in FxRequestBase *Request, __in FxRequestBuffer *Buffer, __in FX_URB_TYPE FxUrbType, __drv_when(FxUrbType==FxUrbTypeUsbdAllocated, __in) __drv_when(FxUrbType !=FxUrbTypeUsbdAllocated, __in_opt) USBD_HANDLE UsbdHandle)
Definition: usbutil.cpp:64
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_CHILD_LIST_CONFIG Config
Definition: wdfchildlist.h:476
_In_ WDFREQUEST Request
Definition: wdfdevice.h:547
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR _In_opt_ PLONGLONG _In_opt_ PWDF_REQUEST_SEND_OPTIONS _Out_opt_ PULONG_PTR BytesWritten
Definition: wdfiotarget.h:960
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR _In_opt_ PLONGLONG _In_opt_ PWDF_REQUEST_SEND_OPTIONS _Out_opt_ PULONG_PTR BytesRead
Definition: wdfiotarget.h:870
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR _In_opt_ PLONGLONG _In_opt_ PWDF_REQUEST_SEND_OPTIONS RequestOptions
Definition: wdfiotarget.h:867
#define WDFAPI
Definition: wdftypes.h:53
_Must_inspect_result_ _In_ WDFUSBPIPE _In_ WDFREQUEST _In_opt_ WDFMEMORY ReadMemory
Definition: wdfusb.h:2000
_Must_inspect_result_ _In_ WDFUSBPIPE _In_ WDFREQUEST _In_opt_ WDFMEMORY WriteMemory
Definition: wdfusb.h:1918
_Must_inspect_result_ _In_ WDFUSBDEVICE _In_ WDFREQUEST _In_ WDFMEMORY UrbMemory
Definition: wdfusb.h:1576
_In_ WDFUSBPIPE UsbPipe
Definition: wdfusb.h:2572
_Must_inspect_result_ _In_ WDFUSBDEVICE _In_opt_ WDFREQUEST _In_opt_ PWDF_REQUEST_SEND_OPTIONS _In_ PWDF_USB_CONTROL_SETUP_PACKET _In_opt_ PWDF_MEMORY_DESCRIPTOR MemoryDescriptor
Definition: wdfusb.h:1339
@ WdfUsbPipeTypeInterrupt
Definition: wdfusb.h:122
@ WdfUsbPipeTypeBulk
Definition: wdfusb.h:121
@ WdfUsbRequestTypePipeUrb
Definition: wdfusb.h:96
_In_ WDFUSBPIPE _Out_ PWDF_USB_PIPE_INFORMATION PipeInformation
Definition: wdfusb.h:1744
enum _WDF_USB_PIPE_TYPE WDF_USB_PIPE_TYPE
_In_ WDFUSBPIPE Pipe
Definition: wdfusb.h:1741