ReactOS  0.4.15-dev-3165-gdf6fff7
fxirp.hpp
Go to the documentation of this file.
1 /*++
2 
3 Copyright (c) Microsoft Corporation
4 
5 Module Name:
6 
7  FxIrp.hpp
8 
9 Abstract:
10 
11  This module implements a class for handling irps.
12 
13 Author:
14 
15 
16 
17 Environment:
18 
19  Both kernel and user mode
20 
21 Revision History:
22 
23 --*/
24 
25 #ifndef _FXIRP_HPP_
26 #define _FXIRP_HPP_
27 
28 class FxIrp {
29 
30  friend struct FxAutoIrp;
31 
32 private:
34 
35 public:
36 
37  FxIrp() {}
38 
40  {
41  }
42 
43  // A function for when not assigning
44 
45  MdIrp
46  SetIrp(
47  MdIrp irp
48  );
49 
50  MdIrp
51  GetIrp(
52  VOID
53  );
54 
55 
56  VOID
59  );
60 
61 
62  NTSTATUS
63  CallDriver(
65  );
66 
67 
68 
69 
70 
71 
72 
73  NTSTATUS
76  );
77 
78 
79  VOID
81  );
82 
85  VOID
86  );
87 
88  VOID
95  );
96 
97  VOID
105  );
106 
110  );
111 
112  //
113  // SendIrpSynchronously achieves synchronous behavior by waiting on an
114  // event after submitting the IRP. The event creation can fail in UM, but
115  // not in KM. Hence, in UM the return code could either indicate event
116  // creation failure or it could indicate the status set on the IRP by the
117  // lower driver. In KM, the return code only indicates the status set on
118  // the IRP by the lower lower, because event creation cannot fail.
119  //
121  NTSTATUS
124  );
125 
126 
127  VOID
129  VOID
130  );
131 
132  VOID
135  );
136 
137  VOID
139  VOID
140  );
141 
142  UCHAR
144  VOID
145  );
146 
147  UCHAR
149  VOID
150  );
151 
152  UCHAR
154  VOID
155  );
156 
159  VOID
160  );
161 
164  VOID
165  );
166 
167  VOID
168  SetContext(
169  __in ULONG Index,
171  );
172 
173  VOID
176  );
177 
178  VOID
181  );
182 
183  VOID
185  __in PMDL Value
186  );
187 
188  VOID
189  SetFlags(
191  );
192 
193  PVOID
194  GetContext(
196  );
197 
198  ULONG
199  GetFlags(
200  VOID
201  );
202 
205  VOID
206  );
207 
208 
211  VOID
212  );
213 
214  static
217  __in MdIrp Irp
218  );
219 
220 
221  VOID
223  VOID
224  );
225 
226 
227  VOID
229  );
230 
231 
232  BOOLEAN
234  );
235 
236 
237  VOID
239  VOID
240  );
241 
242 
243  VOID
244  SetStatus(
246  );
247 
248 
249  NTSTATUS
250  GetStatus(
251  );
252 
253 
254  BOOLEAN
255  Cancel(
256  VOID
257  );
258 
259  VOID
260  SetCancel(
262  );
263 
264 
265  BOOLEAN
266  IsCanceled(
267  );
268 
269 
270  KIRQL
272  );
273 
274 
275  VOID
278  );
279 
280 
281  ULONG_PTR
283  );
284 
285 
286  CCHAR
288  );
289 
290  CCHAR
292  );
293 
295  ListEntry(
296  );
297 
298 
299  PVOID
301  );
302 
303  PVOID
305  );
306 
307  PMDL
308  GetMdl(
309  );
310 
311  PMDL*
313  );
314 
315  PVOID
317  );
318 
319  VOID
320  Reuse(
322  );
323 
324  //
325  // Methods for IO_STACK_LOCATION members
326  //
327 
328  VOID
331  );
332 
333 
334  VOID
337  );
338 
339  //
340  // Get Methods for IO_STACK_LOCATION.Parameters.Power
341  //
342 
345  );
346 
347 
350  );
351 
354  );
355 
356 
359  );
360 
361 
364  );
365 
366 
369  );
370 
371 
374  VOID
375  );
376 
377 
378  //
379  // Get/Set Method for IO_STACK_LOCATION.Parameters.QueryDeviceRelations
380  //
381 
384  );
385 
386  VOID
388  __in DEVICE_RELATION_TYPE DeviceRelation
389  );
390 
391  //
392  // Get/Set Methods for IO_STACK_LOCATION.Parameters.DeviceCapabilities
393  //
394 
397  );
398 
399  VOID
402  );
403 
406  VOID
407  );
408 
409  VOID
412  );
413 
414 
415  //
416  // Get/Set Methods for IO_STACK_LOCATION.Parameters.Write.ByteOffset.QuadPart
417  //
418 
419  LONGLONG
421  );
422 
423 
424  VOID
427  );
428 
429  //
430  // Get/Set Methods for IO_STACK_LOCATION.Parameters.Write.Length
431  //
432 
433  ULONG
435  );
436 
437  VOID
439  __in ULONG IoLength
440  );
441 
442  PVOID*
444  );
445 
446  VOID
449  );
450 
451  PVOID*
453  );
454 
455  PVOID*
457  );
458 
459  //
460  // Get/Set Methods for IO_STACK_LOCATION.Parameters.StartDevice
461  //
462 
465  );
466 
467 
468  VOID
471  );
472 
473 
476  );
477 
478 
479  VOID
482  );
483 
484  //
485  // Get Method for IO_STACK_LOCATION.Parameters.QueryDeviceText
486  //
487 
488  LCID
490  );
491 
492 
495  );
496 
497  //
498  // Get Method for IO_STACK_LOCATION.Parameters.SetLock
499  //
500 
501  BOOLEAN
503  );
504 
505  //
506  // Get Method for IO_STACK_LOCATION.Parameters.QueryId
507  //
508 
511  );
512 
513  //
514  // Get/Set Methods for IO_STACK_LOCATION.Parameters.QueryInterface
515  //
516 
517  PINTERFACE
519  );
520 
521 
522  const GUID*
524  );
525 
526 
527  USHORT
529  );
530 
531 
532  USHORT
534  );
535 
536 
537  PVOID
539  );
540 
541  VOID
544  );
545 
546  VOID
548  __in const GUID* InterfaceType
549  );
550 
551  VOID
554  );
555 
556  VOID
559  );
560 
561  VOID
564  );
565 
566  //
567  // Get Method for IO_STACK_LOCATION.Parameters.UsageNotification
568  //
569 
572  );
573 
574 
575  BOOLEAN
577  );
578 
579 
580  VOID
582  __in BOOLEAN InPath
583  );
584 
585 
586  BOOLEAN
588  );
589 
590  ULONG
592  VOID
593  );
594 
595  ULONG
597  VOID
598  );
599 
600  ULONG
602  VOID
603  );
604 
605  ULONG
607  VOID
608  );
609 
610  PVOID
612  VOID
613  );
614 
615  //
616  // Set Methods for IO_STACK_LOCATION.Parameters.DeviceControl members
617  //
618 
619  VOID
621  __in ULONG DeviceIoControlCode
622  );
623 
624  VOID
627  );
628 
629  VOID
632  );
633 
634  VOID
636  __in PVOID Type3InputBuffer
637  );
638 
639  ULONG
641  VOID
642  );
643 
644  ULONG
646  VOID
647  );
648 
649  VOID
652  );
653 
654  VOID
657  );
658 
659  PVOID
661  VOID
662  );
663 
664  //
665  // Methods for IO_STACK_LOCATION
666  //
667 
668  VOID
670  VOID
671  );
672 
673  VOID
675  VOID
676  );
677 
678  VOID
680  __in FxIrp* Irp
681  );
682 
683  ULONG
685  VOID
686  );
687 
688  VOID
689  FreeIrp(
690  VOID
691  );
692 
693  MdEThread
694  GetThread(
695  VOID
696  );
697 
698  BOOLEAN
700  VOID
701  );
702 
703 private:
704 
705  static
706  NTSTATUS
707  STDCALL
712  );
713 
714 public:
715 
717  static
718  MdIrp
719  AllocateIrp(
722  );
723 
724  static
725  MdIrp
727  __in PLIST_ENTRY Ple
728  );
729 
731  static
732  NTSTATUS
739  );
740 
743  VOID
744  );
745 
746  PVOID
748  );
749 
750  ULONG
752  );
753 
754  VOID
757  );
758 
759  VOID
760  CopyStatus(
761  _Out_ PIO_STATUS_BLOCK StatusBlock
762  );
763 
764  BOOLEAN
765  HasStack(
766  _In_ UCHAR StackCount
767  );
768 
769  BOOLEAN
771  VOID
772  );
773 
774 #if (FX_CORE_MODE == FX_CORE_USER_MODE)
775 
776  IWudfIoIrp*
777  GetIoIrp(
778  VOID
779  );
780 
781  IWudfPnpIrp*
782  GetPnpIrp(
783  VOID
784  );
785 #endif
786 
787 };
788 
789 //
790 // FxAutoIrp adds value to FxIrp by automatically freeing the associated MdIrp
791 // when it goes out of scope
792 //
793 struct FxAutoIrp : public FxIrp {
794 
797  ) :
798  FxIrp(Irp)
799  {
800  }
801 
802 
803  ~FxAutoIrp();
804 };
805 
806 #endif // _FXIRP_HPP_
_In_ PIRP _In_ PIO_COMPLETION_ROUTINE _In_opt_ PVOID _In_ BOOLEAN _In_ BOOLEAN InvokeOnError
Definition: iofuncs.h:1939
PLIST_ENTRY ListEntry()
Definition: fxirpum.cpp:535
POWER_ACTION GetParameterPowerShutdownType()
Definition: fxirpum.cpp:719
LONGLONG GetParameterWriteByteOffsetQuadPart()
Definition: fxirpum.cpp:1373
ULONG GetParameterReadLength(VOID)
Definition: fxirpum.cpp:1589
enum _POWER_STATE_TYPE POWER_STATE_TYPE
_Must_inspect_result_ _In_ WDFDEVICE _In_ LPCGUID _Out_ PINTERFACE _In_ USHORT _In_ USHORT _In_opt_ PVOID InterfaceSpecificData
Definition: wdffdo.h:461
VOID SetMajorFunction(__in UCHAR MajorFunction)
Definition: fxirpum.cpp:905
MdFileObject GetFileObject(VOID)
Definition: fxirpum.cpp:1460
VOID SetParameterIoctlType3InputBuffer(__in PVOID Type3InputBuffer)
Definition: fxirpum.cpp:1175
enum _BUS_QUERY_ID_TYPE BUS_QUERY_ID_TYPE
PVOID GetContext(__in ULONG Index)
Definition: fxirpum.cpp:361
static MdIrp GetIrpFromListEntry(__in PLIST_ENTRY Ple)
Definition: fxirpum.cpp:1190
MdIrp m_Irp
Definition: fxirp.hpp:33
#define _In_opt_
Definition: ms_sal.h:309
UCHAR GetCurrentStackFlags(VOID)
Definition: fxirpum.cpp:1243
VOID SetCurrentDeviceObject(__in MdDeviceObject DeviceObject)
Definition: fxirpum.cpp:1362
_IRQL_requires_same_ _In_opt_ PVOID Argument1
Definition: cmtypes.h:696
VOID CopyToNextIrpStackLocation(__in PIO_STACK_LOCATION Stack)
Definition: fxirpum.cpp:1216
_Must_inspect_result_ _In_ WDFQUEUE _In_opt_ WDFREQUEST _In_opt_ WDFFILEOBJECT _Inout_opt_ PWDF_REQUEST_PARAMETERS Parameters
Definition: wdfio.h:863
VOID SetStatus(__in NTSTATUS Status)
Definition: fxirpum.cpp:457
CCHAR GetCurrentIrpStackLocationIndex()
Definition: fxirpum.cpp:521
MdDeviceObject GetDeviceObject(VOID)
Definition: fxirpum.cpp:1352
BOOLEAN GetParameterSetLockLock()
Definition: fxirpum.cpp:993
DEVICE_USAGE_NOTIFICATION_TYPE GetParameterUsageNotificationType()
Definition: fxirpum.cpp:801
#define _Out_
Definition: ms_sal.h:345
_Inout_opt_ PDEVICE_OBJECT _Inout_opt_ PDEVICE_OBJECT _Inout_opt_ PDEVICE_OBJECT _Inout_opt_ PCM_RESOURCE_LIST * AllocatedResources
Definition: ndis.h:4640
#define __in_opt
Definition: dbghelp.h:38
POWER_STATE GetParameterPowerState()
Definition: fxirpum.cpp:1015
#define TRUE
Definition: types.h:120
NTSTATUS PoCallDriver(__in MdDeviceObject DeviceObject)
Definition: fxirpum.cpp:48
#define CHECK_RETURN_IF_USER_MODE
Definition: mxmacros.h:26
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR _In_opt_ PLONGLONG DeviceOffset
Definition: wdfiotarget.h:859
PVOID GetParameterQueryInterfaceInterfaceSpecificData()
Definition: fxirpum.cpp:785
VOID SetContext(__in ULONG Index, __in PVOID Value)
Definition: fxirpum.cpp:351
VOID SetNextStackParameterOthersArgument1(__in PVOID Argument1)
Definition: fxirpum.cpp:1411
BOOLEAN GetNextStackParameterUsageNotificationInPath()
Definition: fxirpum.cpp:830
enum _DEVICE_USAGE_NOTIFICATION_TYPE DEVICE_USAGE_NOTIFICATION_TYPE
LONG NTSTATUS
Definition: precomp.h:26
FxIrp(MdIrp irp)
Definition: fxirp.hpp:39
ULONG GetFlags(VOID)
Definition: fxirpum.cpp:1281
BOOLEAN IsCurrentIrpStackLocationValid(VOID)
Definition: fxirpum.cpp:1761
USHORT GetParameterQueryInterfaceVersion()
Definition: fxirpum.cpp:765
PIO_STACK_LOCATION GetCurrentIrpStackLocation(VOID)
Definition: fxirpum.cpp:370
Definition: fxirp.hpp:28
IN PVOID IN PVOID IN USHORT IN USHORT Size
Definition: pci.h:361
VOID SetParameterQueryInterfaceInterfaceSpecificData(__in PVOID InterfaceSpecificData)
Definition: fxirpkm.hpp:1091
DWORD LCID
Definition: nls.h:13
_In_ WDFREQUEST _In_ size_t _In_ size_t InputBufferLength
Definition: wdfio.h:318
PFILE_OBJECT MdFileObject
Definition: mxgeneralkm.h:32
VOID SetUserBuffer(__in PVOID Value)
Definition: fxirpum.cpp:1341
enum _DEVICE_TEXT_TYPE DEVICE_TEXT_TYPE
_In_ WDFREQUEST _In_ NTSTATUS _In_ ULONG_PTR Information
Definition: wdfrequest.h:1044
PCM_RESOURCE_LIST GetParameterAllocatedResources()
Definition: fxirpum.cpp:843
LCID GetParameterQueryDeviceTextLocaleId()
Definition: fxirpum.cpp:975
enum _SYSTEM_POWER_STATE SYSTEM_POWER_STATE
BOOLEAN PendingReturned()
Definition: fxirpum.cpp:429
REQUEST_POWER_COMPLETE * MdRequestPowerComplete
Definition: mxum.h:162
VOID PropagatePendingReturned(VOID)
Definition: fxirpum.cpp:443
VOID SetParameterUsageNotificationInPath(__in BOOLEAN InPath)
Definition: fxirpum.cpp:821
uint32_t ULONG_PTR
Definition: typedefs.h:65
MdCompletionRoutine GetNextCompletionRoutine(VOID)
Definition: fxirpum.cpp:1206
_In_ WDFREQUEST _In_ size_t OutputBufferLength
Definition: wdfio.h:318
_In_ WDFREQUEST _In_ PIO_STACK_LOCATION Stack
Definition: wdfrequest.h:636
UCHAR KIRQL
Definition: env_spec_w32.h:591
PVOID GetDriverContext()
Definition: fxirpum.cpp:1673
_In_ PDEVICE_OBJECT DeviceObject
Definition: wdfdevice.h:2055
PMDL * GetMdlAddressPointer()
Definition: fxirpum.cpp:1323
VOID SetParameterIoctlOutputBufferLength(__in ULONG OutputBufferLength)
Definition: fxirpum.cpp:1532
VOID SetNextIrpStackLocation(VOID)
Definition: fxirpum.cpp:1235
SYSTEM_POWER_STATE GetParameterPowerStateSystemState()
Definition: fxirpum.cpp:707
_In_ WDFREQUEST _In_ NTSTATUS _In_ CCHAR PriorityBoost
Definition: wdfrequest.h:1011
_In_ PIRP Irp
Definition: csq.h:116
CHECK_RETURN_IF_USER_MODE NTSTATUS SendIrpSynchronously(__in MdDeviceObject DeviceObject)
Definition: fxirpum.cpp:151
VOID SetCompletionRoutine(__in MdCompletionRoutine CompletionRoutine, __in PVOID Context, __in BOOLEAN InvokeOnSuccess=TRUE, __in BOOLEAN InvokeOnError=TRUE, __in BOOLEAN InvokeOnCancel=TRUE)
Definition: fxirpum.cpp:72
ULONG GetParameterIoctlInputBufferLength(VOID)
Definition: fxirpum.cpp:1518
const GUID * GetParameterQueryInterfaceType()
Definition: fxirpum.cpp:755
_In_ UCHAR _In_ UCHAR MinorFunction
Definition: wdfdevice.h:1697
PCM_RESOURCE_LIST GetParameterAllocatedResourcesTranslated()
Definition: fxirpum.cpp:877
DEVICE_TEXT_TYPE GetParameterQueryDeviceTextType()
Definition: fxirpum.cpp:984
_Inout_opt_ PDEVICE_OBJECT _Inout_opt_ PDEVICE_OBJECT _Inout_opt_ PDEVICE_OBJECT _Inout_opt_ PCM_RESOURCE_LIST _Inout_opt_ PCM_RESOURCE_LIST * AllocatedResourcesTranslated
Definition: ndis.h:4640
PVOID * GetNextStackParameterOthersArgument4Pointer()
Definition: fxirpum.cpp:1447
_In_opt_ PDRIVER_CANCEL CancelRoutine
Definition: iofuncs.h:2744
MdEThread GetThread(VOID)
Definition: fxirpum.cpp:1631
ULONG GetCurrentParameterWriteLength()
VOID SkipCurrentIrpStackLocation(VOID)
Definition: fxirpum.cpp:400
unsigned char BOOLEAN
PINTERFACE GetParameterQueryInterfaceInterface()
Definition: fxirpum.cpp:746
NTSTATUS CallDriver(__in MdDeviceObject DeviceObject)
Definition: fxirpum.cpp:36
VOID StartNextPowerIrp()
Definition: fxirpum.cpp:61
PVOID GetOutputBuffer()
Definition: fxirpum.cpp:594
#define _In_
Definition: ms_sal.h:308
PIO_STATUS_BLOCK GetStatusBlock(VOID)
Definition: fxirpum.cpp:1664
#define DeviceCapabilities
Definition: wingdi.h:4448
IWudfIrp * MdIrp
Definition: mxum.h:103
WUDF_DRIVER_CANCEL * MdCancelRoutine
Definition: mxum.h:143
VOID ClearNextStackLocation(VOID)
Definition: fxirpum.cpp:1581
VOID SetSystemBuffer(__in PVOID Value)
Definition: fxirpum.cpp:1313
PIO_STACK_LOCATION GetNextIrpStackLocation(VOID)
Definition: fxirpum.cpp:387
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
Definition: wdfdevice.h:547
VOID SetFlags(__in ULONG Flags)
Definition: fxirpum.cpp:1266
enum _DEVICE_RELATION_TYPE DEVICE_RELATION_TYPE
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _Out_opt_ PUSHORT _Inout_opt_ PUNICODE_STRING Value
Definition: wdfregistry.h:406
_In_ PIRP _In_ PIO_COMPLETION_ROUTINE _In_opt_ PVOID _In_ BOOLEAN _In_ BOOLEAN _In_ BOOLEAN InvokeOnCancel
Definition: iofuncs.h:1939
PMDL GetMdl()
Definition: fxirpum.cpp:625
Status
Definition: gdiplustypes.h:24
VOID SetMdlAddress(__in PMDL Value)
Definition: fxirpum.cpp:1330
enum _DEVICE_POWER_STATE DEVICE_POWER_STATE
int64_t LONGLONG
Definition: typedefs.h:68
VOID SetParameterAllocatedResourcesTranslated(__in PCM_RESOURCE_LIST AllocatedResourcesTranslated)
Definition: fxirpum.cpp:897
VOID SetCompletionRoutineEx(__in MdDeviceObject DeviceObject, __in MdCompletionRoutine CompletionRoutine, __in PVOID Context, __in BOOLEAN InvokeOnSuccess=TRUE, __in BOOLEAN InvokeOnError=TRUE, __in BOOLEAN InvokeOnCancel=TRUE)
Definition: fxirpum.cpp:104
VOID CopyStatus(_Out_ PIO_STATUS_BLOCK StatusBlock)
Definition: fxirpum.cpp:1736
POWER_STATE_TYPE GetParameterPowerType()
Definition: fxirpum.cpp:683
_Must_inspect_result_ _In_ ULONG Flags
Definition: wsk.h:170
#define STDCALL
Definition: wdf.h:45
FxIrp()
Definition: fxirp.hpp:37
char CCHAR
Definition: typedefs.h:51
_In_ WDFCOLLECTION _In_ ULONG Index
VOID CompleteRequest(__in_opt CCHAR PriorityBoost=IO_NO_INCREMENT)
Definition: fxirpum.cpp:24
_In_ PIRP _In_ PIO_COMPLETION_ROUTINE _In_opt_ PVOID _In_ BOOLEAN InvokeOnSuccess
Definition: iofuncs.h:1939
VOID SetParameterAllocatedResources(__in PCM_RESOURCE_LIST AllocatedResources)
Definition: fxirpum.cpp:869
PVOID GetCurrentParametersPointer(VOID)
Definition: fxirpum.cpp:1622
VOID SetInformation(__in ULONG_PTR Information)
Definition: fxirpum.cpp:504
DEVICE_POWER_STATE GetParameterPowerStateDeviceState()
Definition: fxirpum.cpp:695
VOID FreeIrp(VOID)
Definition: fxirpum.cpp:1648
VOID SetParameterIoctlInputBufferLength(__in ULONG InputBufferLength)
Definition: fxirpum.cpp:1166
IN PVOID IN PVOID IN USHORT Version
Definition: pci.h:361
SYSTEM_POWER_STATE_CONTEXT GetParameterPowerSystemPowerStateContext()
Definition: fxirpum.cpp:671
CCHAR KPROCESSOR_MODE
Definition: ketypes.h:7
VOID SetNextParameterWriteLength(__in ULONG IoLength)
Definition: fxirpum.cpp:1398
USHORT GetParameterQueryInterfaceSize()
Definition: fxirpum.cpp:775
VOID SetCancel(__in BOOLEAN Cancel)
Definition: fxirpum.cpp:1294
unsigned char UCHAR
Definition: xmlstorage.h:181
VOID SetNextParameterWriteByteOffsetQuadPart(__in LONGLONG DeviceOffset)
Definition: fxirpum.cpp:1385
VOID SetNextStackFlags(__in UCHAR Flags)
Definition: fxirpum.cpp:1556
BOOLEAN GetParameterUsageNotificationInPath()
Definition: fxirpum.cpp:811
_In_ UCHAR _In_ POWER_STATE _In_opt_ PREQUEST_POWER_COMPLETE CompletionFunction
Definition: pofuncs.h:42
KIRQL GetCancelIrql()
Definition: fxirpum.cpp:492
BOOLEAN Is32bitProcess(VOID)
Definition: fxirpum.cpp:1640
POWER_ACTION
Definition: ntpoapi.h:122
PVOID GetParameterIoctlType3InputBuffer(VOID)
Definition: fxirpum.cpp:1542
PVOID GetUserBuffer()
Definition: fxirpum.cpp:633
BOOLEAN IsCanceled()
Definition: fxirpum.cpp:484
static _Must_inspect_result_ MdIrp AllocateIrp(_In_ CCHAR StackSize, _In_opt_ FxDevice *Device=NULL)
Definition: fxirpum.cpp:1089
IWudfIoIrp * GetIoIrp(VOID)
Definition: fxirpum.cpp:1777
Definition: typedefs.h:119
_In_ PTRANSFER_PACKET _In_ ULONG _In_ PIRP OriginalIrp
Definition: classp.h:1757
_In_ USHORT _In_ CCHAR StackSize
Definition: iofuncs.h:1058
#define _Must_inspect_result_
Definition: ms_sal.h:558
_Must_inspect_result_ _In_ WDFDEVICE Device
Definition: wdfchildlist.h:474
ULONG GetParameterWriteLength(VOID)
Definition: fxirpum.cpp:1601
VOID MarkIrpPending()
Definition: fxirpum.cpp:415
ULONG GetCurrentFlags(VOID)
Definition: fxirpum.cpp:1613
* PDEVICE_CAPABILITIES
Definition: iotypes.h:965
VOID InitNextStackUsingStack(__in FxIrp *Irp)
Definition: fxirpum.cpp:1035
PVOID * GetNextStackParameterOthersArgument2Pointer()
Definition: fxirpum.cpp:1434
ULONG_PTR GetInformation()
Definition: fxirpum.cpp:513
PVOID GetSystemBuffer()
Definition: fxirpum.cpp:543
IN PVOID IN PVOID IN USHORT IN USHORT IN PINTERFACE Interface
Definition: pci.h:361
MdIrp GetIrp(VOID)
Definition: fxirpum.cpp:15
KPROCESSOR_MODE GetRequestorMode(VOID)
Definition: fxirpum.cpp:329
unsigned short USHORT
Definition: pedump.c:61
ULONG GetParameterIoctlOutputBufferLength(VOID)
Definition: fxirpum.cpp:1504
_In_ UCHAR MajorFunction
Definition: wdfdevice.h:1697
_Must_inspect_result_ _In_ PWDFDEVICE_INIT _In_ WDF_DEVICE_POWER_STATE PowerState
Definition: wdfdevice.h:3032
VOID CopyParameters(_Out_ PWDF_REQUEST_PARAMETERS Parameters)
Definition: fxirpum.cpp:1691
_In_ WDFREQUEST _In_opt_ PFN_WDF_REQUEST_COMPLETION_ROUTINE CompletionRoutine
Definition: wdfrequest.h:893
ULONG GetParameterIoctlCodeBufferMethod(VOID)
Definition: fxirpum.cpp:1490
#define NULL
Definition: types.h:112
VOID Reuse(__in NTSTATUS Status=STATUS_SUCCESS)
Definition: fxirpum.cpp:661
PVOID * GetNextStackParameterOthersArgument1Pointer()
Definition: fxirpum.cpp:1421
CCHAR GetStackCount()
Definition: fxirpum.cpp:1304
VOID SetNextStackFileObject(_In_ MdFileObject FileObject)
Definition: fxirpum.cpp:1573
PDEVICE_CAPABILITIES GetParameterDeviceCapabilities()
Definition: fxirpum.cpp:1132
BOOLEAN Cancel(VOID)
Definition: fxirpum.cpp:475
VOID SetParameterIoctlCode(__in ULONG DeviceIoControlCode)
Definition: fxirpum.cpp:1157
VOID SetParameterQueryInterfaceType(__in const GUID *InterfaceType)
Definition: fxirpkm.hpp:1063
WUDF_IO_COMPLETION_ROUTINE * MdCompletionRoutine
Definition: mxum.h:142
UCHAR GetMinorFunction(VOID)
Definition: fxirpum.cpp:297
BUS_QUERY_ID_TYPE GetParameterQueryIdType()
Definition: fxirpum.cpp:1006
FxAutoIrp(__in_opt MdIrp Irp=NULL)
Definition: fxirp.hpp:795
unsigned int ULONG
Definition: retypes.h:1
#define IO_NO_INCREMENT
Definition: iotypes.h:598
VOID ClearNextStack(VOID)
Definition: fxirpum.cpp:1183
BOOLEAN HasStack(_In_ UCHAR StackCount)
Definition: fxirpum.cpp:1745
static _Must_inspect_result_ NTSTATUS RequestPowerIrp(__in MdDeviceObject DeviceObject, __in UCHAR MinorFunction, __in POWER_STATE PowerState, __in MdRequestPowerComplete CompletionFunction, __in PVOID Context)
Definition: fxirpum.cpp:1047
VOID SetMinorFunction(__in UCHAR MinorFunction)
Definition: fxirpum.cpp:967
#define STATUS_SUCCESS
Definition: shellext.h:65
ULONG GetParameterIoctlCode(VOID)
Definition: fxirpum.cpp:1474
VOID SetParameterQDRType(__in DEVICE_RELATION_TYPE DeviceRelation)
Definition: fxirpkm.hpp:678
MdIrp SetIrp(MdIrp irp)
Definition: fxirpkm.hpp:71
VOID CopyCurrentIrpStackLocationToNext(VOID)
Definition: fxirpum.cpp:209
UCHAR GetMajorFunction(VOID)
Definition: fxirpum.cpp:217
static NTSTATUS STDCALL _IrpSynchronousCompletion(__in MdDeviceObject DeviceObject, __in MdIrp OriginalIrp, __in PVOID Context)
Definition: fxirpum.cpp:133
#define __in
Definition: dbghelp.h:35
DEVICE_RELATION_TYPE GetParameterQDRType()
Definition: fxirpum.cpp:731
VOID SetParameterQueryInterfaceVersion(__in USHORT Version)
Definition: fxirpkm.hpp:1073
MdCancelRoutine SetCancelRoutine(__in_opt MdCancelRoutine CancelRoutine)
Definition: fxirpum.cpp:124
VOID SetParameterDeviceCapabilities(__in PDEVICE_CAPABILITIES DeviceCapabilities)
Definition: fxirpum.cpp:1145
IWudfPnpIrp * GetPnpIrp(VOID)
Definition: fxirpum.cpp:1797
VOID SetParameterQueryInterfaceInterface(__in PINTERFACE Interface)
Definition: fxirpkm.hpp:1053
MdFileObject GetCurrentStackFileObject(VOID)
Definition: fxirpum.cpp:1258
FxIrp * irp
_Must_inspect_result_ _In_ WDFDEVICE _In_ LPCGUID InterfaceType
Definition: wdffdo.h:461
static PIO_STACK_LOCATION _GetAndClearNextStackLocation(__in MdIrp Irp)
Definition: fxirpkm.hpp:371
ULONG GetDriverContextSize()
Definition: fxirpum.cpp:1682
VOID SetParameterQueryInterfaceSize(__in USHORT Size)
Definition: fxirpkm.hpp:1082
NTSTATUS GetStatus()
Definition: fxirpum.cpp:466