ReactOS  0.4.15-dev-2329-g3ad573f
wdfrequest.h
Go to the documentation of this file.
1 /*++
2 
3 Copyright (c) Microsoft Corporation. All rights reserved.
4 
5 _WdfVersionBuild_
6 
7 Module Name:
8 
9  wdfrequest.h
10 
11 Abstract:
12 
13  This module contains contains the Windows Driver Framework Request object
14  interfaces.
15 
16 Environment:
17 
18  kernel mode only
19 
20 Revision History:
21 
22 
23 --*/
24 
25 //
26 // NOTE: This header is generated by stubwork. Please make any
27 // modifications to the corresponding template files
28 // (.x or .y) and use stubwork to regenerate the header
29 //
30 
31 #ifndef _WDFREQUEST_H_
32 #define _WDFREQUEST_H_
33 
34 #ifndef WDF_EXTERN_C
35  #ifdef __cplusplus
36  #define WDF_EXTERN_C extern "C"
37  #define WDF_EXTERN_C_START extern "C" {
38  #define WDF_EXTERN_C_END }
39  #else
40  #define WDF_EXTERN_C
41  #define WDF_EXTERN_C_START
42  #define WDF_EXTERN_C_END
43  #endif
44 #endif
45 
47 
48 
49 
50 #if (NTDDI_VERSION >= NTDDI_WIN2K)
51 
52 //
53 // Types
54 //
55 
56 /* typedef enum _WDF_REQUEST_TYPE { // declaration moved to wdfdevice.h
57  WdfRequestTypeCreate = 0x0,
58  WdfRequestTypeCreateNamedPipe = 0x1,
59  WdfRequestTypeClose = 0x2,
60  WdfRequestTypeRead = 0x3,
61  WdfRequestTypeWrite = 0x4,
62  WdfRequestTypeQueryInformation = 0x5,
63  WdfRequestTypeSetInformation = 0x6,
64  WdfRequestTypeQueryEA = 0x7,
65  WdfRequestTypeSetEA = 0x8,
66  WdfRequestTypeFlushBuffers = 0x9,
67  WdfRequestTypeQueryVolumeInformation = 0xa,
68  WdfRequestTypeSetVolumeInformation = 0xb,
69  WdfRequestTypeDirectoryControl = 0xc,
70  WdfRequestTypeFileSystemControl = 0xd,
71  WdfRequestTypeDeviceControl = 0xe,
72  WdfRequestTypeDeviceControlInternal = 0xf,
73  WdfRequestTypeShutdown = 0x10,
74  WdfRequestTypeLockControl = 0x11,
75  WdfRequestTypeCleanup = 0x12,
76  WdfRequestTypeCreateMailSlot = 0x13,
77  WdfRequestTypeQuerySecurity = 0x14,
78  WdfRequestTypeSetSecurity = 0x15,
79  WdfRequestTypePower = 0x16,
80  WdfRequestTypeSystemControl = 0x17,
81  WdfRequestTypeDeviceChange = 0x18,
82  WdfRequestTypeQueryQuota = 0x19,
83  WdfRequestTypeSetQuota = 0x1A,
84  WdfRequestTypePnp = 0x1B,
85  WdfRequestTypeOther =0x1C,
86  WdfRequestTypeUsb = 0x40,
87  WdfRequestTypeNoFormat = 0xFF,
88  WdfRequestTypeMax,
89 } WDF_REQUEST_TYPE; */
90 
95 
96 //
97 // This defines the actions to take on a request
98 // in EvtIoStop.
99 //
102  WdfRequestStopActionSuspend = 0x01, // Device is being suspended
103  WdfRequestStopActionPurge = 0x2, // Device/queue is being removed
104  WdfRequestStopRequestCancelable = 0x10000000, // This bit is set if the request is marked cancelable
106 
115 
116 
117 
118 // Request cancel is called if a request that has been marked cancelable is cancelled
119 typedef
120 _Function_class_(EVT_WDF_REQUEST_CANCEL)
123 VOID
124 STDCALL
125 EVT_WDF_REQUEST_CANCEL(
126  _In_
127  WDFREQUEST Request
128  );
129 
130 typedef EVT_WDF_REQUEST_CANCEL *PFN_WDF_REQUEST_CANCEL;
131 
132 
133 //
134 // This parameters structure allows general access to a requests parameters
135 //
136 typedef struct _WDF_REQUEST_PARAMETERS {
137 
139 
141 
143 
144  //
145  // The following user parameters are based on the service that is being
146  // invoked. Drivers and file systems can determine which set to use based
147  // on the above major and minor function codes.
148  //
149  union {
150 
151  //
152  // System service parameters for: Create
153  //
154 
155  struct {
161  } Create;
162 
163 
164  //
165  // System service parameters for: Read
166  //
167 
168  struct {
169  size_t Length;
172  } Read;
173 
174  //
175  // System service parameters for: Write
176  //
177 
178  struct {
179  size_t Length;
182  } Write;
183 
184  //
185  // System service parameters for: Device Control
186  //
187  // Note that the user's output buffer is stored in the UserBuffer field
188  // and the user's input buffer is stored in the SystemBuffer field.
189  //
190 
191  struct {
196  } DeviceIoControl;
197 
198  struct {
203  } Others;
204 
205  } Parameters;
206 
208 
210 VOID
213  )
214 {
216 
217  Parameters->Size = sizeof(WDF_REQUEST_PARAMETERS);
218 }
219 
221 
223  //
224  // Size of the structure in bytes
225  //
227 
229 
231 
232  union {
233  struct {
234  WDFMEMORY Buffer;
235  size_t Length;
236  size_t Offset;
237  } Write;
238 
239  struct {
240  WDFMEMORY Buffer;
241  size_t Length;
242  size_t Offset;
243  } Read;
244 
245  struct {
247 
248  struct {
249  WDFMEMORY Buffer;
250  size_t Offset;
251  } Input;
252 
253  struct {
254  WDFMEMORY Buffer;
255  size_t Offset;
256  size_t Length;
257  } Output;
258  } Ioctl;
259 
260  struct {
261  union {
264  } Argument1;
265  union {
266  PVOID Ptr;
268  } Argument2;
269  union {
270  PVOID Ptr;
272  } Argument3;
273  union {
274  PVOID Ptr;
276  } Argument4;
277  } Others;
278 
279  struct {
281  } Usb;
282  } Parameters;
283 
285 
287 VOID
290  )
291 {
293  Params->Size = sizeof(WDF_REQUEST_COMPLETION_PARAMS);
295 }
296 
297 typedef
298 _Function_class_(EVT_WDF_REQUEST_COMPLETION_ROUTINE)
300 VOID
301 STDCALL
302 EVT_WDF_REQUEST_COMPLETION_ROUTINE(
303  _In_
304  WDFREQUEST Request,
305  _In_
306  WDFIOTARGET Target,
307  _In_
309  _In_
311  );
312 
313 typedef EVT_WDF_REQUEST_COMPLETION_ROUTINE *PFN_WDF_REQUEST_COMPLETION_ROUTINE;
314 
315 /*++
316 
317 Routine Description:
318  Clears out the internal state of the irp, which includes, but is not limited
319  to:
320  a) Any internal allocations for the previously formatted request
321  b) The completion routine and its context
322  c) The request's intended i/o target
323  d) All of the internal IRP's stack locations
324 
325 Arguments:
326  Request - The request to be reused.
327 
328  ReuseParams - Parameters controlling the reuse of the request, see comments
329  for each field in the structure for usage
330 
331 Return Value:
332  None
333 
334  --*/
335 
337  //
338  // Size of this structure in bytes
339  //
341 
342  //
343  // Bit field combination of WDF_REQUEST_REUSE_Xxx values
344  //
346 
347  //
348  // The new status of the request.
349  //
351 
352  //
353  // New PIRP to be contained in the WDFREQUEST. Setting a new PIRP value
354  // is only valid for WDFREQUESTs created by WdfRequestCreateFromIrp where
355  // RequestFreesIrp == FALSE. No other WDFREQUESTs (presented by the
356  // I/O queue for instance) may have their IRPs changed.
357  //
359 
361 
363 VOID
366  _In_ ULONG Flags,
368  )
369 {
371 
372  Params->Size = sizeof(WDF_REQUEST_REUSE_PARAMS);
373  Params->Flags = Flags;
374  Params->Status = Status;
375 }
376 
378 VOID
381  _In_ PIRP NewIrp
382  )
383 {
385  Params->NewIrp = NewIrp;
386 }
387 
389  //
390  // Size of the structure in bytes
391  //
393 
394  //
395  // Bit field combination of values from the WDF_REQUEST_SEND_OPTIONS_FLAGS
396  // enumeration
397  //
399 
400  //
401  // Valid when WDF_REQUEST_SEND_OPTION_TIMEOUT is set
402  //
404 
406 
408 VOID
412  )
413 {
415  Options->Size = sizeof(WDF_REQUEST_SEND_OPTIONS);
416  Options->Flags = Flags;
417 }
418 
420 VOID
424  )
425 {
427  Options->Timeout = Timeout;
428 }
429 
433 
435  //
436  // Size of the structure in bytes
437  //
439 
440  //
441  // Bit field combination of values from the WDF_REQUEST_FORWARD_OPTIONS_FLAGS
442  // enumeration
443  //
446 
447 
448 //
449 // Default REquest forward initialization macro
450 //
452 VOID
455  )
456 {
458 
461 }
462 
463 
464 
465 
466 //
467 // WDF Function: WdfRequestCreate
468 //
469 typedef
472 WDFAPI
473 NTSTATUS
474 (STDCALL *PFN_WDFREQUESTCREATE)(
475  _In_
477  _In_opt_
479  _In_opt_
480  WDFIOTARGET IoTarget,
481  _Out_
482  WDFREQUEST* Request
483  );
484 
488 NTSTATUS
489 WdfRequestCreate(
490  _In_opt_
492  _In_opt_
493  WDFIOTARGET IoTarget,
494  _Out_
495  WDFREQUEST* Request
496  )
497 {
499 }
500 
501 //
502 // WDF Function: WdfRequestCreateFromIrp
503 //
504 typedef
507 WDFAPI
508 NTSTATUS
509 (STDCALL *PFN_WDFREQUESTCREATEFROMIRP)(
510  _In_
512  _In_opt_
514  _In_
515  PIRP Irp,
516  _In_
518  _Out_
519  WDFREQUEST* Request
520  );
521 
525 NTSTATUS
526 WdfRequestCreateFromIrp(
527  _In_opt_
529  _In_
530  PIRP Irp,
531  _In_
533  _Out_
534  WDFREQUEST* Request
535  )
536 {
538 }
539 
540 //
541 // WDF Function: WdfRequestReuse
542 //
543 typedef
545 WDFAPI
546 NTSTATUS
547 (STDCALL *PFN_WDFREQUESTREUSE)(
548  _In_
550  _In_
551  WDFREQUEST Request,
552  _In_
554  );
555 
558 NTSTATUS
559 WdfRequestReuse(
560  _In_
561  WDFREQUEST Request,
562  _In_
564  )
565 {
567 }
568 
569 //
570 // WDF Function: WdfRequestChangeTarget
571 //
572 typedef
575 WDFAPI
576 NTSTATUS
577 (STDCALL *PFN_WDFREQUESTCHANGETARGET)(
578  _In_
580  _In_
581  WDFREQUEST Request,
582  _In_
583  WDFIOTARGET IoTarget
584  );
585 
589 NTSTATUS
590 WdfRequestChangeTarget(
591  _In_
592  WDFREQUEST Request,
593  _In_
594  WDFIOTARGET IoTarget
595  )
596 {
597  return ((PFN_WDFREQUESTCHANGETARGET) WdfFunctions[WdfRequestChangeTargetTableIndex])(WdfDriverGlobals, Request, IoTarget);
598 }
599 
600 //
601 // WDF Function: WdfRequestFormatRequestUsingCurrentType
602 //
603 typedef
605 WDFAPI
606 VOID
607 (STDCALL *PFN_WDFREQUESTFORMATREQUESTUSINGCURRENTTYPE)(
608  _In_
610  _In_
611  WDFREQUEST Request
612  );
613 
616 VOID
617 WdfRequestFormatRequestUsingCurrentType(
618  _In_
619  WDFREQUEST Request
620  )
621 {
622  ((PFN_WDFREQUESTFORMATREQUESTUSINGCURRENTTYPE) WdfFunctions[WdfRequestFormatRequestUsingCurrentTypeTableIndex])(WdfDriverGlobals, Request);
623 }
624 
625 //
626 // WDF Function: WdfRequestWdmFormatUsingStackLocation
627 //
628 typedef
630 WDFAPI
631 VOID
632 (STDCALL *PFN_WDFREQUESTWDMFORMATUSINGSTACKLOCATION)(
633  _In_
635  _In_
636  WDFREQUEST Request,
637  _In_
639  );
640 
643 VOID
644 WdfRequestWdmFormatUsingStackLocation(
645  _In_
646  WDFREQUEST Request,
647  _In_
649  )
650 {
651  ((PFN_WDFREQUESTWDMFORMATUSINGSTACKLOCATION) WdfFunctions[WdfRequestWdmFormatUsingStackLocationTableIndex])(WdfDriverGlobals, Request, Stack);
652 }
653 
654 //
655 // WDF Function: WdfRequestSend
656 //
657 typedef
660 WDFAPI
661 BOOLEAN
663  _In_
665  _In_
666  WDFREQUEST Request,
667  _In_
668  WDFIOTARGET Target,
669  _In_opt_
671  );
672 
676 BOOLEAN
678  _In_
679  WDFREQUEST Request,
680  _In_
681  WDFIOTARGET Target,
682  _In_opt_
684  )
685 {
687 }
688 
689 //
690 // WDF Function: WdfRequestGetStatus
691 //
692 typedef
695 WDFAPI
696 NTSTATUS
697 (STDCALL *PFN_WDFREQUESTGETSTATUS)(
698  _In_
700  _In_
701  WDFREQUEST Request
702  );
703 
707 NTSTATUS
708 WdfRequestGetStatus(
709  _In_
710  WDFREQUEST Request
711  )
712 {
713  return ((PFN_WDFREQUESTGETSTATUS) WdfFunctions[WdfRequestGetStatusTableIndex])(WdfDriverGlobals, Request);
714 }
715 
716 //
717 // WDF Function: WdfRequestMarkCancelable
718 //
719 typedef
721 WDFAPI
722 VOID
723 (STDCALL *PFN_WDFREQUESTMARKCANCELABLE)(
724  _In_
726  _In_
727  WDFREQUEST Request,
728  _In_
730  );
731 
734 VOID
735 WdfRequestMarkCancelable(
736  _In_
737  WDFREQUEST Request,
738  _In_
740  )
741 {
743 }
744 
745 //
746 // WDF Function: WdfRequestMarkCancelableEx
747 //
748 typedef
751 WDFAPI
752 NTSTATUS
753 (STDCALL *PFN_WDFREQUESTMARKCANCELABLEEX)(
754  _In_
756  _In_
757  WDFREQUEST Request,
758  _In_
760  );
761 
765 NTSTATUS
766 WdfRequestMarkCancelableEx(
767  _In_
768  WDFREQUEST Request,
769  _In_
771  )
772 {
773  return ((PFN_WDFREQUESTMARKCANCELABLEEX) WdfFunctions[WdfRequestMarkCancelableExTableIndex])(WdfDriverGlobals, Request, EvtRequestCancel);
774 }
775 
776 //
777 // WDF Function: WdfRequestUnmarkCancelable
778 //
779 typedef
782 WDFAPI
783 NTSTATUS
784 (STDCALL *PFN_WDFREQUESTUNMARKCANCELABLE)(
785  _In_
787  _In_
788  WDFREQUEST Request
789  );
790 
794 NTSTATUS
795 WdfRequestUnmarkCancelable(
796  _In_
797  WDFREQUEST Request
798  )
799 {
800  return ((PFN_WDFREQUESTUNMARKCANCELABLE) WdfFunctions[WdfRequestUnmarkCancelableTableIndex])(WdfDriverGlobals, Request);
801 }
802 
803 //
804 // WDF Function: WdfRequestIsCanceled
805 //
806 typedef
809 WDFAPI
810 BOOLEAN
811 (STDCALL *PFN_WDFREQUESTISCANCELED)(
812  _In_
814  _In_
815  WDFREQUEST Request
816  );
817 
821 BOOLEAN
822 WdfRequestIsCanceled(
823  _In_
824  WDFREQUEST Request
825  )
826 {
827  return ((PFN_WDFREQUESTISCANCELED) WdfFunctions[WdfRequestIsCanceledTableIndex])(WdfDriverGlobals, Request);
828 }
829 
830 //
831 // WDF Function: WdfRequestCancelSentRequest
832 //
833 typedef
835 WDFAPI
836 BOOLEAN
837 (STDCALL *PFN_WDFREQUESTCANCELSENTREQUEST)(
838  _In_
840  _In_
841  WDFREQUEST Request
842  );
843 
846 BOOLEAN
847 WdfRequestCancelSentRequest(
848  _In_
849  WDFREQUEST Request
850  )
851 {
852  return ((PFN_WDFREQUESTCANCELSENTREQUEST) WdfFunctions[WdfRequestCancelSentRequestTableIndex])(WdfDriverGlobals, Request);
853 }
854 
855 //
856 // WDF Function: WdfRequestIsFrom32BitProcess
857 //
858 typedef
861 WDFAPI
862 BOOLEAN
863 (STDCALL *PFN_WDFREQUESTISFROM32BITPROCESS)(
864  _In_
866  _In_
867  WDFREQUEST Request
868  );
869 
873 BOOLEAN
874 WdfRequestIsFrom32BitProcess(
875  _In_
876  WDFREQUEST Request
877  )
878 {
879  return ((PFN_WDFREQUESTISFROM32BITPROCESS) WdfFunctions[WdfRequestIsFrom32BitProcessTableIndex])(WdfDriverGlobals, Request);
880 }
881 
882 //
883 // WDF Function: WdfRequestSetCompletionRoutine
884 //
885 typedef
887 WDFAPI
888 VOID
889 (STDCALL *PFN_WDFREQUESTSETCOMPLETIONROUTINE)(
890  _In_
892  _In_
893  WDFREQUEST Request,
894  _In_opt_
898  );
899 
902 VOID
903 WdfRequestSetCompletionRoutine(
904  _In_
905  WDFREQUEST Request,
906  _In_opt_
910  )
911 {
913 }
914 
915 //
916 // WDF Function: WdfRequestGetCompletionParams
917 //
918 typedef
920 WDFAPI
921 VOID
922 (STDCALL *PFN_WDFREQUESTGETCOMPLETIONPARAMS)(
923  _In_
925  _In_
926  WDFREQUEST Request,
927  _Out_
929  );
930 
933 VOID
934 WdfRequestGetCompletionParams(
935  _In_
936  WDFREQUEST Request,
937  _Out_
939  )
940 {
941  ((PFN_WDFREQUESTGETCOMPLETIONPARAMS) WdfFunctions[WdfRequestGetCompletionParamsTableIndex])(WdfDriverGlobals, Request, Params);
942 }
943 
944 //
945 // WDF Function: WdfRequestAllocateTimer
946 //
947 typedef
950 WDFAPI
951 NTSTATUS
952 (STDCALL *PFN_WDFREQUESTALLOCATETIMER)(
953  _In_
955  _In_
956  WDFREQUEST Request
957  );
958 
962 NTSTATUS
963 WdfRequestAllocateTimer(
964  _In_
965  WDFREQUEST Request
966  )
967 {
968  return ((PFN_WDFREQUESTALLOCATETIMER) WdfFunctions[WdfRequestAllocateTimerTableIndex])(WdfDriverGlobals, Request);
969 }
970 
971 //
972 // WDF Function: WdfRequestComplete
973 //
974 typedef
976 WDFAPI
977 VOID
978 (STDCALL *PFN_WDFREQUESTCOMPLETE)(
979  _In_
981  _In_
982  WDFREQUEST Request,
983  _In_
985  );
986 
989 VOID
990 WdfRequestComplete(
991  _In_
992  WDFREQUEST Request,
993  _In_
995  )
996 {
998 }
999 
1000 //
1001 // WDF Function: WdfRequestCompleteWithPriorityBoost
1002 //
1003 typedef
1005 WDFAPI
1006 VOID
1007 (STDCALL *PFN_WDFREQUESTCOMPLETEWITHPRIORITYBOOST)(
1008  _In_
1010  _In_
1011  WDFREQUEST Request,
1012  _In_
1013  NTSTATUS Status,
1014  _In_
1016  );
1017 
1020 VOID
1021 WdfRequestCompleteWithPriorityBoost(
1022  _In_
1023  WDFREQUEST Request,
1024  _In_
1025  NTSTATUS Status,
1026  _In_
1028  )
1029 {
1031 }
1032 
1033 //
1034 // WDF Function: WdfRequestCompleteWithInformation
1035 //
1036 typedef
1038 WDFAPI
1039 VOID
1040 (STDCALL *PFN_WDFREQUESTCOMPLETEWITHINFORMATION)(
1041  _In_
1043  _In_
1044  WDFREQUEST Request,
1045  _In_
1046  NTSTATUS Status,
1047  _In_
1049  );
1050 
1053 VOID
1054 WdfRequestCompleteWithInformation(
1055  _In_
1056  WDFREQUEST Request,
1057  _In_
1058  NTSTATUS Status,
1059  _In_
1061  )
1062 {
1064 }
1065 
1066 //
1067 // WDF Function: WdfRequestGetParameters
1068 //
1069 typedef
1071 WDFAPI
1072 VOID
1073 (STDCALL *PFN_WDFREQUESTGETPARAMETERS)(
1074  _In_
1076  _In_
1077  WDFREQUEST Request,
1078  _Out_
1080  );
1081 
1084 VOID
1085 WdfRequestGetParameters(
1086  _In_
1087  WDFREQUEST Request,
1088  _Out_
1090  )
1091 {
1093 }
1094 
1095 //
1096 // WDF Function: WdfRequestRetrieveInputMemory
1097 //
1098 typedef
1101 WDFAPI
1102 NTSTATUS
1103 (STDCALL *PFN_WDFREQUESTRETRIEVEINPUTMEMORY)(
1104  _In_
1106  _In_
1107  WDFREQUEST Request,
1108  _Out_
1109  WDFMEMORY* Memory
1110  );
1111 
1115 NTSTATUS
1116 WdfRequestRetrieveInputMemory(
1117  _In_
1118  WDFREQUEST Request,
1119  _Out_
1120  WDFMEMORY* Memory
1121  )
1122 {
1123  return ((PFN_WDFREQUESTRETRIEVEINPUTMEMORY) WdfFunctions[WdfRequestRetrieveInputMemoryTableIndex])(WdfDriverGlobals, Request, Memory);
1124 }
1125 
1126 //
1127 // WDF Function: WdfRequestRetrieveOutputMemory
1128 //
1129 typedef
1132 WDFAPI
1133 NTSTATUS
1134 (STDCALL *PFN_WDFREQUESTRETRIEVEOUTPUTMEMORY)(
1135  _In_
1137  _In_
1138  WDFREQUEST Request,
1139  _Out_
1140  WDFMEMORY* Memory
1141  );
1142 
1146 NTSTATUS
1147 WdfRequestRetrieveOutputMemory(
1148  _In_
1149  WDFREQUEST Request,
1150  _Out_
1151  WDFMEMORY* Memory
1152  )
1153 {
1154  return ((PFN_WDFREQUESTRETRIEVEOUTPUTMEMORY) WdfFunctions[WdfRequestRetrieveOutputMemoryTableIndex])(WdfDriverGlobals, Request, Memory);
1155 }
1156 
1157 //
1158 // WDF Function: WdfRequestRetrieveInputBuffer
1159 //
1160 typedef
1163 WDFAPI
1164 NTSTATUS
1165 (STDCALL *PFN_WDFREQUESTRETRIEVEINPUTBUFFER)(
1166  _In_
1168  _In_
1169  WDFREQUEST Request,
1170  _In_
1171  size_t MinimumRequiredLength,
1173  PVOID* Buffer,
1174  _Out_opt_
1175  size_t* Length
1176  );
1177 
1181 NTSTATUS
1182 WdfRequestRetrieveInputBuffer(
1183  _In_
1184  WDFREQUEST Request,
1185  _In_
1186  size_t MinimumRequiredLength,
1188  PVOID* Buffer,
1189  _Out_opt_
1190  size_t* Length
1191  )
1192 {
1194 }
1195 
1196 //
1197 // WDF Function: WdfRequestRetrieveOutputBuffer
1198 //
1199 typedef
1202 WDFAPI
1203 NTSTATUS
1204 (STDCALL *PFN_WDFREQUESTRETRIEVEOUTPUTBUFFER)(
1205  _In_
1207  _In_
1208  WDFREQUEST Request,
1209  _In_
1210  size_t MinimumRequiredSize,
1212  PVOID* Buffer,
1213  _Out_opt_
1214  size_t* Length
1215  );
1216 
1220 NTSTATUS
1221 WdfRequestRetrieveOutputBuffer(
1222  _In_
1223  WDFREQUEST Request,
1224  _In_
1225  size_t MinimumRequiredSize,
1227  PVOID* Buffer,
1228  _Out_opt_
1229  size_t* Length
1230  )
1231 {
1233 }
1234 
1235 //
1236 // WDF Function: WdfRequestRetrieveInputWdmMdl
1237 //
1238 typedef
1241 WDFAPI
1242 NTSTATUS
1243 (STDCALL *PFN_WDFREQUESTRETRIEVEINPUTWDMMDL)(
1244  _In_
1246  _In_
1247  WDFREQUEST Request,
1248  _Outptr_
1249  PMDL* Mdl
1250  );
1251 
1255 NTSTATUS
1256 WdfRequestRetrieveInputWdmMdl(
1257  _In_
1258  WDFREQUEST Request,
1259  _Outptr_
1260  PMDL* Mdl
1261  )
1262 {
1263  return ((PFN_WDFREQUESTRETRIEVEINPUTWDMMDL) WdfFunctions[WdfRequestRetrieveInputWdmMdlTableIndex])(WdfDriverGlobals, Request, Mdl);
1264 }
1265 
1266 //
1267 // WDF Function: WdfRequestRetrieveOutputWdmMdl
1268 //
1269 typedef
1272 WDFAPI
1273 NTSTATUS
1274 (STDCALL *PFN_WDFREQUESTRETRIEVEOUTPUTWDMMDL)(
1275  _In_
1277  _In_
1278  WDFREQUEST Request,
1279  _Outptr_
1280  PMDL* Mdl
1281  );
1282 
1286 NTSTATUS
1287 WdfRequestRetrieveOutputWdmMdl(
1288  _In_
1289  WDFREQUEST Request,
1290  _Outptr_
1291  PMDL* Mdl
1292  )
1293 {
1294  return ((PFN_WDFREQUESTRETRIEVEOUTPUTWDMMDL) WdfFunctions[WdfRequestRetrieveOutputWdmMdlTableIndex])(WdfDriverGlobals, Request, Mdl);
1295 }
1296 
1297 //
1298 // WDF Function: WdfRequestRetrieveUnsafeUserInputBuffer
1299 //
1300 typedef
1303 WDFAPI
1304 NTSTATUS
1305 (STDCALL *PFN_WDFREQUESTRETRIEVEUNSAFEUSERINPUTBUFFER)(
1306  _In_
1308  _In_
1309  WDFREQUEST Request,
1310  _In_
1311  size_t MinimumRequiredLength,
1313  PVOID* InputBuffer,
1314  _Out_opt_
1315  size_t* Length
1316  );
1317 
1321 NTSTATUS
1322 WdfRequestRetrieveUnsafeUserInputBuffer(
1323  _In_
1324  WDFREQUEST Request,
1325  _In_
1326  size_t MinimumRequiredLength,
1328  PVOID* InputBuffer,
1329  _Out_opt_
1330  size_t* Length
1331  )
1332 {
1334 }
1335 
1336 //
1337 // WDF Function: WdfRequestRetrieveUnsafeUserOutputBuffer
1338 //
1339 typedef
1342 WDFAPI
1343 NTSTATUS
1344 (STDCALL *PFN_WDFREQUESTRETRIEVEUNSAFEUSEROUTPUTBUFFER)(
1345  _In_
1347  _In_
1348  WDFREQUEST Request,
1349  _In_
1350  size_t MinimumRequiredLength,
1353  _Out_opt_
1354  size_t* Length
1355  );
1356 
1360 NTSTATUS
1361 WdfRequestRetrieveUnsafeUserOutputBuffer(
1362  _In_
1363  WDFREQUEST Request,
1364  _In_
1365  size_t MinimumRequiredLength,
1368  _Out_opt_
1369  size_t* Length
1370  )
1371 {
1373 }
1374 
1375 //
1376 // WDF Function: WdfRequestSetInformation
1377 //
1378 typedef
1380 WDFAPI
1381 VOID
1382 (STDCALL *PFN_WDFREQUESTSETINFORMATION)(
1383  _In_
1385  _In_
1386  WDFREQUEST Request,
1387  _In_
1389  );
1390 
1393 VOID
1394 WdfRequestSetInformation(
1395  _In_
1396  WDFREQUEST Request,
1397  _In_
1399  )
1400 {
1402 }
1403 
1404 //
1405 // WDF Function: WdfRequestGetInformation
1406 //
1407 typedef
1409 WDFAPI
1410 ULONG_PTR
1411 (STDCALL *PFN_WDFREQUESTGETINFORMATION)(
1412  _In_
1414  _In_
1415  WDFREQUEST Request
1416  );
1417 
1420 ULONG_PTR
1421 WdfRequestGetInformation(
1422  _In_
1423  WDFREQUEST Request
1424  )
1425 {
1426  return ((PFN_WDFREQUESTGETINFORMATION) WdfFunctions[WdfRequestGetInformationTableIndex])(WdfDriverGlobals, Request);
1427 }
1428 
1429 //
1430 // WDF Function: WdfRequestGetFileObject
1431 //
1432 typedef
1434 WDFAPI
1435 WDFFILEOBJECT
1436 (STDCALL *PFN_WDFREQUESTGETFILEOBJECT)(
1437  _In_
1439  _In_
1440  WDFREQUEST Request
1441  );
1442 
1445 WDFFILEOBJECT
1446 WdfRequestGetFileObject(
1447  _In_
1448  WDFREQUEST Request
1449  )
1450 {
1451  return ((PFN_WDFREQUESTGETFILEOBJECT) WdfFunctions[WdfRequestGetFileObjectTableIndex])(WdfDriverGlobals, Request);
1452 }
1453 
1454 //
1455 // WDF Function: WdfRequestProbeAndLockUserBufferForRead
1456 //
1457 typedef
1460 WDFAPI
1461 NTSTATUS
1462 (STDCALL *PFN_WDFREQUESTPROBEANDLOCKUSERBUFFERFORREAD)(
1463  _In_
1465  _In_
1466  WDFREQUEST Request,
1468  PVOID Buffer,
1469  _In_
1470  size_t Length,
1471  _Out_
1472  WDFMEMORY* MemoryObject
1473  );
1474 
1478 NTSTATUS
1479 WdfRequestProbeAndLockUserBufferForRead(
1480  _In_
1481  WDFREQUEST Request,
1483  PVOID Buffer,
1484  _In_
1485  size_t Length,
1486  _Out_
1487  WDFMEMORY* MemoryObject
1488  )
1489 {
1490  return ((PFN_WDFREQUESTPROBEANDLOCKUSERBUFFERFORREAD) WdfFunctions[WdfRequestProbeAndLockUserBufferForReadTableIndex])(WdfDriverGlobals, Request, Buffer, Length, MemoryObject);
1491 }
1492 
1493 //
1494 // WDF Function: WdfRequestProbeAndLockUserBufferForWrite
1495 //
1496 typedef
1499 WDFAPI
1500 NTSTATUS
1501 (STDCALL *PFN_WDFREQUESTPROBEANDLOCKUSERBUFFERFORWRITE)(
1502  _In_
1504  _In_
1505  WDFREQUEST Request,
1507  PVOID Buffer,
1508  _In_
1509  size_t Length,
1510  _Out_
1511  WDFMEMORY* MemoryObject
1512  );
1513 
1517 NTSTATUS
1518 WdfRequestProbeAndLockUserBufferForWrite(
1519  _In_
1520  WDFREQUEST Request,
1522  PVOID Buffer,
1523  _In_
1524  size_t Length,
1525  _Out_
1526  WDFMEMORY* MemoryObject
1527  )
1528 {
1529  return ((PFN_WDFREQUESTPROBEANDLOCKUSERBUFFERFORWRITE) WdfFunctions[WdfRequestProbeAndLockUserBufferForWriteTableIndex])(WdfDriverGlobals, Request, Buffer, Length, MemoryObject);
1530 }
1531 
1532 //
1533 // WDF Function: WdfRequestGetRequestorMode
1534 //
1535 typedef
1537 WDFAPI
1539 (STDCALL *PFN_WDFREQUESTGETREQUESTORMODE)(
1540  _In_
1542  _In_
1543  WDFREQUEST Request
1544  );
1545 
1549 WdfRequestGetRequestorMode(
1550  _In_
1551  WDFREQUEST Request
1552  )
1553 {
1554  return ((PFN_WDFREQUESTGETREQUESTORMODE) WdfFunctions[WdfRequestGetRequestorModeTableIndex])(WdfDriverGlobals, Request);
1555 }
1556 
1557 //
1558 // WDF Function: WdfRequestForwardToIoQueue
1559 //
1560 typedef
1563 WDFAPI
1564 NTSTATUS
1565 (STDCALL *PFN_WDFREQUESTFORWARDTOIOQUEUE)(
1566  _In_
1568  _In_
1569  WDFREQUEST Request,
1570  _In_
1571  WDFQUEUE DestinationQueue
1572  );
1573 
1577 NTSTATUS
1578 WdfRequestForwardToIoQueue(
1579  _In_
1580  WDFREQUEST Request,
1581  _In_
1582  WDFQUEUE DestinationQueue
1583  )
1584 {
1585  return ((PFN_WDFREQUESTFORWARDTOIOQUEUE) WdfFunctions[WdfRequestForwardToIoQueueTableIndex])(WdfDriverGlobals, Request, DestinationQueue);
1586 }
1587 
1588 //
1589 // WDF Function: WdfRequestGetIoQueue
1590 //
1591 typedef
1593 WDFAPI
1594 WDFQUEUE
1595 (STDCALL *PFN_WDFREQUESTGETIOQUEUE)(
1596  _In_
1598  _In_
1599  WDFREQUEST Request
1600  );
1601 
1604 WDFQUEUE
1605 WdfRequestGetIoQueue(
1606  _In_
1607  WDFREQUEST Request
1608  )
1609 {
1610  return ((PFN_WDFREQUESTGETIOQUEUE) WdfFunctions[WdfRequestGetIoQueueTableIndex])(WdfDriverGlobals, Request);
1611 }
1612 
1613 //
1614 // WDF Function: WdfRequestRequeue
1615 //
1616 typedef
1619 WDFAPI
1620 NTSTATUS
1621 (STDCALL *PFN_WDFREQUESTREQUEUE)(
1622  _In_
1624  _In_
1625  WDFREQUEST Request
1626  );
1627 
1631 NTSTATUS
1632 WdfRequestRequeue(
1633  _In_
1634  WDFREQUEST Request
1635  )
1636 {
1637  return ((PFN_WDFREQUESTREQUEUE) WdfFunctions[WdfRequestRequeueTableIndex])(WdfDriverGlobals, Request);
1638 }
1639 
1640 //
1641 // WDF Function: WdfRequestStopAcknowledge
1642 //
1643 typedef
1645 WDFAPI
1646 VOID
1647 (STDCALL *PFN_WDFREQUESTSTOPACKNOWLEDGE)(
1648  _In_
1650  _In_
1651  WDFREQUEST Request,
1652  _In_
1654  );
1655 
1658 VOID
1659 WdfRequestStopAcknowledge(
1660  _In_
1661  WDFREQUEST Request,
1662  _In_
1664  )
1665 {
1667 }
1668 
1669 //
1670 // WDF Function: WdfRequestWdmGetIrp
1671 //
1672 typedef
1674 WDFAPI
1675 PIRP
1676 (STDCALL *PFN_WDFREQUESTWDMGETIRP)(
1677  _In_
1679  _In_
1680  WDFREQUEST Request
1681  );
1682 
1685 PIRP
1686 WdfRequestWdmGetIrp(
1687  _In_
1688  WDFREQUEST Request
1689  )
1690 {
1691  return ((PFN_WDFREQUESTWDMGETIRP) WdfFunctions[WdfRequestWdmGetIrpTableIndex])(WdfDriverGlobals, Request);
1692 }
1693 
1694 //
1695 // WDF Function: WdfRequestIsReserved
1696 //
1697 typedef
1699 WDFAPI
1700 BOOLEAN
1701 (STDCALL *PFN_WDFREQUESTISRESERVED)(
1702  _In_
1704  _In_
1705  WDFREQUEST Request
1706  );
1707 
1710 BOOLEAN
1711 WdfRequestIsReserved(
1712  _In_
1713  WDFREQUEST Request
1714  )
1715 {
1716  return ((PFN_WDFREQUESTISRESERVED) WdfFunctions[WdfRequestIsReservedTableIndex])(WdfDriverGlobals, Request);
1717 }
1718 
1719 //
1720 // WDF Function: WdfRequestForwardToParentDeviceIoQueue
1721 //
1722 typedef
1725 WDFAPI
1726 NTSTATUS
1727 (STDCALL *PFN_WDFREQUESTFORWARDTOPARENTDEVICEIOQUEUE)(
1728  _In_
1730  _In_
1731  WDFREQUEST Request,
1732  _In_
1733  WDFQUEUE ParentDeviceQueue,
1734  _In_
1736  );
1737 
1741 NTSTATUS
1742 WdfRequestForwardToParentDeviceIoQueue(
1743  _In_
1744  WDFREQUEST Request,
1745  _In_
1746  WDFQUEUE ParentDeviceQueue,
1747  _In_
1749  )
1750 {
1752 }
1753 
1754 
1755 
1756 
1757 
1758 
1759 
1760 
1761 
1762 
1763 
1764 #endif // (NTDDI_VERSION >= NTDDI_WIN2K)
1765 
1766 
1768 
1769 #endif // _WDFREQUEST_H_
1770 
_Must_inspect_result_ _IRQL_requires_max_(DISPATCH_LEVEL) WDFAPI NTSTATUS(STDCALL *PFN_WDFREQUESTCREATE)(_In_ PWDF_DRIVER_GLOBALS DriverGlobals
Definition: wdfrequest.h:471
_In_ WDFREQUEST _In_ PFN_WDF_REQUEST_CANCEL EvtRequestCancel
Definition: wdfrequest.h:727
FORCEINLINE VOID WDF_REQUEST_SEND_OPTIONS_INIT(_Out_ PWDF_REQUEST_SEND_OPTIONS Options, _In_ ULONG Flags)
Definition: wdfrequest.h:409
union _WDF_REQUEST_COMPLETION_PARAMS::@3671::@3675::@3680 Argument2
FORCEINLINE VOID WDF_REQUEST_REUSE_PARAMS_SET_NEW_IRP(_Inout_ PWDF_REQUEST_REUSE_PARAMS Params, _In_ PIRP NewIrp)
Definition: wdfrequest.h:379
#define _Must_inspect_result_
Definition: no_sal2.h:62
_Must_inspect_result_ WDFAPI BOOLEAN(STDCALL * PFN_WDFREQUESTSEND)(_In_ PWDF_DRIVER_GLOBALS DriverGlobals, _In_ WDFREQUEST Request, _In_ WDFIOTARGET Target, _In_opt_ PWDF_REQUEST_SEND_OPTIONS Options)
Definition: wdfrequest.h:662
_In_ ULONG _In_ ULONG _In_ ULONG Length
Definition: ntddpcm.h:101
_Must_inspect_result_ _In_ WDFREQUEST _In_ size_t _Outptr_result_bytebuffer_ Length PVOID _Out_opt_ size_t * Length
Definition: wdfrequest.h:1172
_WDF_REQUEST_SEND_OPTIONS_FLAGS
Definition: wdfrequest.h:107
union _WDF_REQUEST_COMPLETION_PARAMS::@3671::@3675::@3679 Argument1
_Must_inspect_result_ _In_ WDFQUEUE _In_opt_ WDFREQUEST _In_opt_ WDFFILEOBJECT _Inout_opt_ PWDF_REQUEST_PARAMETERS Parameters
Definition: wdfio.h:863
_In_ WDFIOTARGET _In_ PWDF_REQUEST_COMPLETION_PARAMS Params
Definition: wdfrequest.h:306
_In_ WDFREQUEST _In_opt_ PFN_WDF_REQUEST_COMPLETION_ROUTINE _In_opt_ __drv_aliasesMem WDFCONTEXT CompletionContext
Definition: wdfrequest.h:893
ULONG POINTER_ALIGNMENT IoControlCode
Definition: wdfrequest.h:194
_Must_inspect_result_ _In_ WDFREQUEST _Outptr_ PMDL * Mdl
Definition: wdfrequest.h:1247
_Must_inspect_result_ _In_ WDFREQUEST _In_ WDFQUEUE _In_ PWDF_REQUEST_FORWARD_OPTIONS ForwardOptions
Definition: wdfrequest.h:1731
_WDF_REQUEST_REUSE_FLAGS
Definition: wdfrequest.h:91
EVT_WDF_REQUEST_CANCEL * PFN_WDF_REQUEST_CANCEL
Definition: wdfrequest.h:130
_WDF_REQUEST_STOP_ACTION_FLAGS
Definition: wdfrequest.h:100
FORCEINLINE VOID WDF_REQUEST_FORWARD_OPTIONS_INIT(_Out_ PWDF_REQUEST_FORWARD_OPTIONS ForwardOptions)
Definition: wdfrequest.h:453
_In_ WDFREQUEST _In_ PWDF_REQUEST_REUSE_PARAMS ReuseParams
Definition: wdfrequest.h:551
_Must_inspect_result_ _In_opt_ PWDF_OBJECT_ATTRIBUTES RequestAttributes
Definition: wdfrequest.h:478
LONG NTSTATUS
Definition: precomp.h:26
WDF_REQUEST_TYPE Type
Definition: wdfrequest.h:142
#define _Outptr_
Definition: no_sal2.h:262
struct _WDF_REQUEST_PARAMETERS WDF_REQUEST_PARAMETERS
_In_ WDFREQUEST Request
Definition: wdfdevice.h:547
struct _WDF_REQUEST_COMPLETION_PARAMS * PWDF_REQUEST_COMPLETION_PARAMS
struct _WDF_USB_REQUEST_COMPLETION_PARAMS * PWDF_USB_REQUEST_COMPLETION_PARAMS
Definition: wdfrequest.h:220
DriverGlobals
_Must_inspect_result_ _In_ WDFREQUEST _In_ size_t _Outptr_result_bytebuffer_maybenull_ Length PVOID * InputBuffer
Definition: wdfrequest.h:1312
enum _WDF_REQUEST_STOP_ACTION_FLAGS WDF_REQUEST_STOP_ACTION_FLAGS
ULONG POINTER_ALIGNMENT EaLength
Definition: wdfrequest.h:160
_Must_inspect_result_ _In_ WDFREQUEST _In_ size_t MinimumRequiredLength
Definition: wdfrequest.h:1169
#define _Outptr_result_bytebuffer_maybenull_(size)
Definition: sal.h:480
_In_ WDFREQUEST _In_ NTSTATUS _In_ ULONG_PTR Information
Definition: wdfrequest.h:1044
_Must_inspect_result_ _In_ WDFREQUEST _In_ size_t _Outptr_result_bytebuffer_maybenull_ Length PVOID * OutputBuffer
Definition: wdfrequest.h:1351
#define _In_opt_
Definition: no_sal2.h:212
#define WdfFunctions
Definition: wdf.h:66
_Must_inspect_result_ _In_opt_ PWDF_OBJECT_ATTRIBUTES _In_ PIRP Irp
Definition: wdfrequest.h:513
enum _WDF_REQUEST_SEND_OPTIONS_FLAGS WDF_REQUEST_SEND_OPTIONS_FLAGS
_Must_inspect_result_ _In_ WDFREQUEST _In_ size_t MinimumRequiredSize
Definition: wdfrequest.h:1208
uint32_t ULONG_PTR
Definition: typedefs.h:65
#define WDF_EXTERN_C_START
Definition: wdfrequest.h:41
_In_ WDFREQUEST _In_ PIO_STACK_LOCATION Stack
Definition: wdfrequest.h:636
PIO_SECURITY_CONTEXT SecurityContext
Definition: wdfrequest.h:156
PWDF_USB_REQUEST_COMPLETION_PARAMS Completion
Definition: wdfrequest.h:280
struct _WDF_REQUEST_COMPLETION_PARAMS::@3671::@3672 Write
_In_ WDFREQUEST _In_ NTSTATUS _In_ CCHAR PriorityBoost
Definition: wdfrequest.h:1011
_In_ PIRP Irp
Definition: csq.h:116
_Must_inspect_result_ _In_ WDFREQUEST _In_reads_bytes_(Length) PVOID Buffer
Definition: wdfrequest.h:1467
struct _WDF_REQUEST_SEND_OPTIONS WDF_REQUEST_SEND_OPTIONS
#define WDFAPI
Definition: wdftypes.h:53
_In_ PWDFDEVICE_INIT _In_ PWDF_OBJECT_ATTRIBUTES RequestAttributes
Definition: wdfdevice.h:3428
size_t POINTER_ALIGNMENT InputBufferLength
Definition: wdfrequest.h:193
struct _WDF_REQUEST_SEND_OPTIONS * PWDF_REQUEST_SEND_OPTIONS
#define __drv_aliasesMem
Definition: btrfs_drv.h:205
FORCEINLINE VOID WDF_REQUEST_REUSE_PARAMS_INIT(_Out_ PWDF_REQUEST_REUSE_PARAMS Params, _In_ ULONG Flags, _In_ NTSTATUS Status)
Definition: wdfrequest.h:364
struct _WDF_REQUEST_COMPLETION_PARAMS::@3671::@3675 Others
unsigned char BOOLEAN
struct _WDF_REQUEST_COMPLETION_PARAMS::@3671::@3673 Read
#define _Out_
Definition: no_sal2.h:160
USHORT POINTER_ALIGNMENT FileAttributes
Definition: wdfrequest.h:158
#define _IRQL_requires_same_
Definition: driverspecs.h:215
EVT_WDF_REQUEST_COMPLETION_ROUTINE * PFN_WDF_REQUEST_COMPLETION_ROUTINE
Definition: wdfrequest.h:313
Definition: bufpool.h:45
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR OutputBuffer
Definition: wdfiotarget.h:859
#define POINTER_ALIGNMENT
_Must_inspect_result_ _In_opt_ PWDF_OBJECT_ATTRIBUTES _In_ _Strict_type_match_ POOL_TYPE _In_opt_ ULONG _In_ _Out_ WDFMEMORY * Memory
Definition: wdfmemory.h:169
Status
Definition: gdiplustypes.h:24
FORCEINLINE VOID WDF_REQUEST_COMPLETION_PARAMS_INIT(_Out_ PWDF_REQUEST_COMPLETION_PARAMS Params)
Definition: wdfrequest.h:288
int64_t LONGLONG
Definition: typedefs.h:68
#define _Out_opt_
Definition: no_sal2.h:214
PWDF_DRIVER_GLOBALS WdfDriverGlobals
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR InputBuffer
Definition: wdfiotarget.h:949
ULONG POINTER_ALIGNMENT Key
Definition: wdfrequest.h:170
_In_ PWDFDEVICE_INIT _In_ PWDF_REMOVE_LOCK_OPTIONS Options
Definition: wdfdevice.h:3531
_Must_inspect_result_ _In_ ULONG Flags
Definition: wsk.h:170
struct _WDF_REQUEST_FORWARD_OPTIONS WDF_REQUEST_FORWARD_OPTIONS
struct _WDF_REQUEST_REUSE_PARAMS WDF_REQUEST_REUSE_PARAMS
#define STDCALL
Definition: wdf.h:45
enum _WDF_REQUEST_TYPE WDF_REQUEST_TYPE
union _WDF_REQUEST_PARAMETERS::@3665 Parameters
_In_ WDFREQUEST _In_ NTSTATUS Status
Definition: wdfrequest.h:982
char CCHAR
Definition: typedefs.h:51
struct _WDF_REQUEST_COMPLETION_PARAMS::@3671::@3676 Usb
_Must_inspect_result_ _In_ WDFREQUEST _In_ size_t _Outptr_result_bytebuffer_ Length PVOID * Buffer
Definition: wdfrequest.h:1172
struct _WDF_REQUEST_COMPLETION_PARAMS::@3671::@3674::@3678 Output
#define _Inout_
Definition: no_sal2.h:162
struct _IRP * PIRP
CCHAR KPROCESSOR_MODE
Definition: ketypes.h:7
#define _Outptr_result_bytebuffer_(s)
Definition: no_sal2.h:288
union _WDF_REQUEST_COMPLETION_PARAMS::@3671::@3675::@3682 Argument4
_In_ WDFREQUEST _In_ BOOLEAN Requeue
Definition: wdfrequest.h:1651
struct _WDF_REQUEST_PARAMETERS * PWDF_REQUEST_PARAMETERS
WDF_EXTERN_C_START enum _WDF_REQUEST_REUSE_FLAGS WDF_REQUEST_REUSE_FLAGS
unsigned char UCHAR
Definition: xmlstorage.h:181
_Must_inspect_result_ _In_ WDFREQUEST _In_ size_t _Out_ WDFMEMORY * MemoryObject
Definition: wdfrequest.h:1470
#define NTSTATUS
Definition: precomp.h:20
#define VOID
Definition: acefi.h:82
#define PASSIVE_LEVEL
Definition: env_spec_w32.h:693
_Must_inspect_result_ FORCEINLINE BOOLEAN WdfRequestSend(_In_ WDFREQUEST Request, _In_ WDFIOTARGET Target, _In_opt_ PWDF_REQUEST_SEND_OPTIONS Options)
Definition: wdfrequest.h:677
struct _WDF_REQUEST_COMPLETION_PARAMS WDF_REQUEST_COMPLETION_PARAMS
#define WDF_EXTERN_C_END
Definition: wdfrequest.h:42
struct _WDF_REQUEST_PARAMETERS::@3665::@3669 DeviceIoControl
struct _WDF_REQUEST_PARAMETERS::@3665::@3667 Read
enum _WDF_REQUEST_FORWARD_OPTIONS_FLAGS WDF_REQUEST_FORWARD_OPTIONS_FLAGS
#define DISPATCH_LEVEL
Definition: env_spec_w32.h:696
#define _In_
Definition: no_sal2.h:158
static ULONG Timeout
Definition: ping.c:61
unsigned short USHORT
Definition: pedump.c:61
typedef _Function_class_(EVT_WDF_REQUEST_CANCEL) _IRQL_requires_same_ _IRQL_requires_max_(DISPATCH_LEVEL) VOID STDCALL EVT_WDF_REQUEST_CANCEL(_In_ WDFREQUEST Request)
_Must_inspect_result_ _In_opt_ PWDF_OBJECT_ATTRIBUTES _In_opt_ WDFIOTARGET IoTarget
Definition: wdfrequest.h:478
#define FORCEINLINE
Definition: wdftypes.h:67
_In_ WDFREQUEST _In_opt_ PFN_WDF_REQUEST_COMPLETION_ROUTINE CompletionRoutine
Definition: wdfrequest.h:893
_Must_inspect_result_ _In_ WDFREQUEST _In_ WDFQUEUE ParentDeviceQueue
Definition: wdfrequest.h:1731
_Must_inspect_result_ _In_opt_ PWDF_OBJECT_ATTRIBUTES _In_ PIRP _In_ BOOLEAN RequestFreesIrp
Definition: wdfrequest.h:513
_In_ WDFDEVICE _In_ PVOID _In_opt_ PMDL Mdl
FORCEINLINE VOID WDF_REQUEST_PARAMETERS_INIT(_Out_ PWDF_REQUEST_PARAMETERS Parameters)
Definition: wdfrequest.h:211
_In_ WDFIOTARGET Target
Definition: wdfrequest.h:306
struct _WDF_REQUEST_REUSE_PARAMS * PWDF_REQUEST_REUSE_PARAMS
#define _When_(c, a)
Definition: no_sal2.h:38
#define BOOLEAN
Definition: pedump.c:73
struct _WDF_REQUEST_PARAMETERS::@3665::@3666 Create
unsigned int ULONG
Definition: retypes.h:1
_Must_inspect_result_ _In_ WDFDEVICE _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFIOTARGET * IoTarget
Definition: wdfiotarget.h:363
_Must_inspect_result_ _In_ WDFREQUEST _In_ WDFQUEUE DestinationQueue
Definition: wdfrequest.h:1569
#define RtlZeroMemory(Destination, Length)
Definition: typedefs.h:262
#define ULONG_PTR
Definition: config.h:101
union _WDF_REQUEST_COMPLETION_PARAMS::@3671 Parameters
_In_ WDFREQUEST _Out_ PWDF_REQUEST_PARAMETERS Parameters
Definition: wdfrequest.h:1077
struct _WDF_REQUEST_COMPLETION_PARAMS::@3671::@3674 Ioctl
FORCEINLINE VOID WDF_REQUEST_SEND_OPTIONS_SET_TIMEOUT(_Inout_ PWDF_REQUEST_SEND_OPTIONS Options, _In_ LONGLONG Timeout)
Definition: wdfrequest.h:421
struct _WDF_REQUEST_FORWARD_OPTIONS * PWDF_REQUEST_FORWARD_OPTIONS
struct _WDF_REQUEST_COMPLETION_PARAMS::@3671::@3674::@3677 Input
union _WDF_REQUEST_COMPLETION_PARAMS::@3671::@3675::@3681 Argument3
_Must_inspect_result_ _In_opt_ PWDF_OBJECT_ATTRIBUTES _In_opt_ WDFIOTARGET _Out_ WDFREQUEST * Request
Definition: wdfrequest.h:478
#define APC_LEVEL
Definition: env_spec_w32.h:695
_Must_inspect_result_ _In_ WDFREQUEST _Out_ WDFMEMORY * Memory
Definition: wdfrequest.h:1107
struct _WDF_REQUEST_PARAMETERS::@3665::@3670 Others
_WDF_REQUEST_FORWARD_OPTIONS_FLAGS
Definition: wdfrequest.h:430
struct _WDF_REQUEST_PARAMETERS::@3665::@3668 Write