116 "Memory allocation failed %!STATUS!",
133 if (
Device->GetDriverGlobals()->FxRequestParentOptimizationOn) {
152 "Could not commit FxRequest %!STATUS!",
status);
203 "Handle create failed %!STATUS!",
status);
222 "Irp %p Ownership %!FxRequestIrpOwnership! FxRequest %p, status %!STATUS!",
386 if (GetDriverGlobals()->FxVerifierIO ) {
387 (
VOID) VerifyRequestIsNotCompleted(GetDriverGlobals());
403 "Completing Cancelable WDFREQUEST %p. "
405 "This results in a race condition in the device driver that can "
406 "cause double completions. "
408 "Call WdfRequestUnmarkCancelable before WdfRequestComplete. "
410 "If WdfRequestUnmarkCancelable returns STATUS_CANCELLED, "
411 "do not complete the request until the EvtIoCancel handler is called. "
413 "The straightforward way to ensure this is to complete a canceled "
414 "request from the EvIoCancel callback.",
426 switch (m_Irp.GetMajorFunction()) {
428 length = m_Irp.GetParameterReadLength();
433 length = m_Irp.GetParameterWriteLength();
438 if (m_Irp.GetRequestorMode() ==
UserMode) {
439 length = m_Irp.GetParameterIoctlOutputBufferLength();
482 m_Irp.GetInformation() >
length) {
488 "WDFREQUEST %p, MJ 0x%x, Information 0x%I64x is greater then "
489 "buffer length 0x%x",
GetHandle(), m_Irp.GetMajorFunction(),
490 m_Irp.GetInformation(),
length);
493 data.Irp =
reinterpret_cast<PIRP>(m_Irp.GetIrp());
495 data.Information = m_Irp.GetInformation();
496 data.MajorFunction = m_Irp.GetMajorFunction();
579#if (FX_CORE_MODE == FX_CORE_KERNEL_MODE)
592 (flagsMasked != 0)) {
596 "Driver that handled WDFREQUEST 0x%p is requesting data to "
597 " be written back to the UserBuffer by returing a non zero value "
598 " in the Irp 0x%p Information field even though the OutputBufferLength "
628 "Converting WDF NTSTATUS value 0x%x...",
Status);
647 "Unknown WDF NTSTATUS 0x%x",
Status);
653 "... to %!STATUS!",
Status);
663 ASSERTMSG(
"WDFREQUEST is part of a WDFQUEUE, it could be Cancellable\n",
765 "WDFREQUEST 0x%p, PIRP 0x%p, Major Function 0x%x, completed with "
766 "outstanding references on WDFMEMORY 0x%p or 0x%p retrieved from "
781 "WDFMEMORY 0x%p, buffer %p, PMDL %p, length %I64d bytes",
790 "IOCTL output WDFMEMORY 0x%p, buffer %p, PMDL %p, length %I64d bytes",
843 pRefedDevice->ADDREF(&
irp);
863 if (pRefedDevice !=
NULL) {
864 pRefedDevice->RELEASE(&
irp);
890 GetDevice()->m_PkgIo->RequestCompletedCallback(
this);
894 Queue->RequestCompletedCallback(
this);
932 GetDevice()->m_PkgIo->RequestCompletedCallback(
this);
936 Queue->RequestCompletedCallback(
this);
972 Queue->PreRequestCompletedCallback(
this);
1017 Queue->PostRequestCompletedCallback(
this);
1062 if (m_CompletionRoutine.m_Completion !=
NULL) {
1065 "WDFREQUEST %p cannot send and forget will not execute completion "
1067 GetHandle(), m_CompletionRoutine.m_Completion);
1092 "WDFREQUEST %p cannot send and forget a create request which "
1093 "has a WDFFILEOBJECT created for it, it must have a completion "
1094 "routine and be post processsed",
GetHandle());
1322 "Attempt to get UserMode Buffer Pointer for WDFDEVICE 0x%p, "
1323 "WDFREQUEST 0x%p, %!STATUS!",
1328 "Driver must use buffered or direct I/O for this call, or use "
1329 "WdfDeviceInitSetIoInCallerContextCallback to probe and lock "
1330 "user mode memory");
1354 "WDFREQUEST %p InputBufferLength length is zero, %!STATUS!",
1379 "Attempt to get UserMode Buffer Pointer for METHOD_NEITHER "
1380 "DeviceControl 0x%x, WDFDEVICE 0x%p, WDFREQUEST 0x%p, "
1387 "Driver must use METHOD_BUFFERED or METHOD_xx_DIRECT I/O for "
1388 "this call, or use WdfDeviceInitSetIoInCallerContextCallback to "
1389 "probe and lock user mode memory %!STATUS!",
1418 "Unrecognized Major Function 0x%x on WDFDEVICE 0x%p WDFREQUEST 0x%p",
1432 "WDFREQUEST 0x%p length is zero, %!STATUS!",
1452 "WDFREQUEST 0x%p, direct io device, PMDL is NULL, "
1480 "WDFREQUEST 0x%p could not get a system address for PMDL "
1627 "WDFREQUEST 0x%p IOCTL output buffer length is zero, %!STATUS!",
1669 "Attempt to get UserMode Buffer Pointer for "
1670 "METHOD_NEITHER DeviceControl 0x%x, WDFDEVICE 0x%p, "
1671 "WDFREQUEST 0x%p, %!STATUS!",
1677 "Driver must use METHOD_BUFFERED or METHOD_xx_DIRECT "
1678 "I/O for this call, or use "
1679 "WdfDeviceInitSetIoInCallerContextCallback to probe and "
1680 "lock user mode memory");
1700 "WDFREQUEST 0x%p, METHOD_IN_DIRECT IOCTL PMDL is NULL, "
1728 "WDFREQUEST 0x%p could not get a system address for PMDL"
1781 "WDFREQUEST 0x%p has already been completed",
1836 "Already in FxIrpQueue 0x%p WDFREQUEST 0x%p %!STATUS!",
1850 status = VerifyRequestIsNotCompleted(FxDriverGlobals);
2005 "WDFREQUEST 0x%p not on IrpQueue",
2072 TagCsqContext =
NULL;
2155 "Driver is trying to reuse WDFREQUEST 0x%p while it is still "
2156 "active on WDFIOTARGET 0x%p. ",
2193#if (FX_CORE_MODE == FX_CORE_KERNEL_MODE)
2254 if (pOldIrp !=
NULL) {
2255 FxIrp oldIrp(pOldIrp);
2284#if (FX_CORE_MODE == FX_CORE_KERNEL_MODE)
2307 "WDFREQUEST %p doesn't belong to any queue, %!STATUS!",
2320 "Driver is trying to reuse WDFREQUEST 0x%p without "
2321 "specifying an IRP with "
2322 "WDF_REQUEST_REUSE_MUST_COMPLETE flag, %!STATUS!",
2335 "Driver is trying to reuse WDFREQUEST 0x%p holding an"
2336 "internal allocated IRP with "
2337 "WDF_REQUEST_REUSE_MUST_COMPLETE flag, %!STATUS!",
2350 "Driver is trying to reuse WDFREQUEST 0x%p with "
2351 "WDF_REQUEST_REUSE_MUST_COMPLETE flag while request is "
2352 "being referenced, reference count:%d, %!STATUS!",
2365 "IRP %p of WDFREQUEST %p doesn't have a valid"
2366 " stack location, %!STATUS!",
2537 "Attempt to release an IRP reference without adding "
2538 "one first WDFREQUEST 0x%p",
GetHandle());
2572 "Attempt to access user mode memory from the wrong process "
2573 "Irp->Tail.Overlay.Thread 0x%p, PsGetCurrentThread 0x%p, "
2605 status = VerifyRequestIsInEvtIoStopContext(FxDriverGlobals);
2622 status = VerifyRequestIsNotCancelable(FxDriverGlobals);
2753 if (FxDriverGlobals->IsVerificationEnabled(1, 11,
OkForDownLevel)) {
2756 "WDFREQUEST %p deferred the dispose operation. This normally "
2757 "indicates that at least one of its children asked for passive "
2758 "level disposal. This is not supported.",
GetHandle());
2779 "WDFREQUEST 0x%p is not owned by the driver, %!STATUS!",
2788 "WDFREQUEST 0x%p has been "
2789 "used as a TagRequest in WdfIoQueueFindRequest. "
2790 "A TagRequest cannot be used until it is retrieved "
2791 "by WdfIoQueueRetrieveFoundRequest",
2819 "WDFREQUEST 0x%p is not cancelable, %!STATUS!",
2846 "WDFREQUEST 0x%p should be unmarked cancelable by calling "
2847 "WdfRequestUnmarkCancelable, %!STATUS!",
2874 "This call is valid only in EvtIoInCallerContext callback, "
2901 "This call is valid only in EvtIoStop callback, "
2928 "WDFREQUEST 0x%p is already completed, %!STATUS!",
2963 "Request 0x%p is not returned by WdfIoQueueFindRequest, "
2984 if (IsAllocatedFromIo() ==
FALSE) {
2987 "Request 0x%p was not allocated for an incoming IRP, "
3016 "WDFREQUEST %p doesn't have an IRP, %!STATUS!",
3025 if (m_Irp.IsCurrentIrpStackLocationValid() ==
FALSE) {
3028 "IRP %p of WDFREQUEST %p doesn't have a valid"
3029 " stack location, %!STATUS!",
3051 if (GetDriverGlobals()->IsVersionGreaterThanOrEqualTo(1,11) ==
FALSE) {
3052 status = VerifyRequestIsAllocatedFromIo(FxDriverGlobals);
3059 status = VerifyRequestIsCurrentStackValid(FxDriverGlobals);
3072 if (IsCanComplete() ==
FALSE) {
3075 "IRP %p of WDFREQUEST %p cannot be completed, "
3109 if (reservedRequest && retValue == 1 &&
m_Completed) {
3115 else if (allocFromIo ==
FALSE && canComplete && retValue == 1 &&
m_Completed) {
3157FxRequestFromLookaside::operator
new(
3192 #if FX_VERBOSE_TRACE
3194 "Free FxRequest* %p memory",
this);
#define InterlockedIncrement
#define InterlockedDecrement
FxPkgGeneral * m_PkgGeneral
__inline WDF_FILEOBJECT_CLASS GetFileObjectClass(VOID)
VOID FreeRequestMemory(__in FxRequest *Request)
static _Must_inspect_result_ NTSTATUS _GetFileObjectFromWdm(__in FxDevice *pDevice, __in WDF_FILEOBJECT_CLASS FileObjectClass, __in_opt MdFileObject pWdmFileObject, __deref_out_opt FxFileObject **ppFxFileObject)
VOID ReturnReservedRequest(__in FxRequest *ReservedRequest)
UCHAR GetMajorFunction(VOID)
ULONG GetParameterWriteLength(VOID)
VOID CompleteRequest(__in_opt CCHAR PriorityBoost=IO_NO_INCREMENT)
ULONG GetParameterIoctlCodeBufferMethod(VOID)
ULONG GetParameterIoctlCode(VOID)
KPROCESSOR_MODE GetRequestorMode(VOID)
VOID SetCancel(__in BOOLEAN Cancel)
ULONG GetParameterIoctlOutputBufferLength(VOID)
MdFileObject GetFileObject(VOID)
VOID SkipCurrentIrpStackLocation(VOID)
VOID SetStatus(__in NTSTATUS Status)
VOID CopyParameters(_Out_ PWDF_REQUEST_PARAMETERS Parameters)
VOID SetInformation(__in ULONG_PTR Information)
BOOLEAN IsCurrentIrpStackLocationValid(VOID)
UCHAR GetMinorFunction(VOID)
ULONG GetParameterIoctlInputBufferLength(VOID)
ULONG_PTR GetInformation()
VOID SetFlags(__in ULONG Flags)
ULONG GetParameterReadLength(VOID)
VOID Reuse(__in NTSTATUS Status=STATUS_SUCCESS)
__inline PFX_DRIVER_GLOBALS GetDriverGlobals(VOID)
VOID __inline DestroyChildren(VOID)
ULONG __inline AddRef(__in_opt PVOID Tag=NULL, __in LONG Line=0, __in_opt PSTR File=NULL)
VOID DeleteEarlyDisposedObject(VOID)
__drv_restoresIRQL KIRQL __in BOOLEAN Unlock
VOID ClearEvtCallbacks(VOID)
BOOLEAN EarlyDispose(VOID)
virtual ULONG Release(__in_opt PVOID Tag=NULL, __in LONG Line=0, __in_opt PSTR File=NULL)
VOID DeleteFromFailedCreate(VOID)
static PFX_POOL_HEADER _CleanupPointer(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in FxObject *Object)
virtual _Must_inspect_result_ NTSTATUS QueryInterface(__in FxQueryInterfaceParams *Params)
_Must_inspect_result_ NTSTATUS Commit(__in_opt PWDF_OBJECT_ATTRIBUTES Attributes, __out_opt WDFOBJECT *ObjectHandle, __in_opt FxObject *Parent=NULL, __in BOOLEAN AssignDriverAsDefaultParent=TRUE)
VOID CreateCompleted(__in FxIrp *Irp)
MdIrp SetSubmitIrp(__in_opt MdIrp NewIrp, __in BOOLEAN FreeIrp=TRUE)
WDFOBJECT_OFFSET_ALIGNED m_OutputBufferOffset
BOOLEAN __inline IsCanComplete(VOID)
__inline VOID SetVerifierFlags(__in SHORT Flags)
__inline PVOID GetTraceObjectHandle(VOID)
__inline BOOLEAN HasContext(VOID)
UCHAR m_RequestBaseStaticFlags
FxRequestContext * m_RequestContext
__inline VOID ClearVerifierFlags(__in SHORT Flags)
SHORT GetVerifierFlagsLocked(VOID)
__inline FxIoTarget * GetTarget(VOID)
_Must_inspect_result_ NTSTATUS ValidateTarget(__in FxIoTarget *Target)
BOOLEAN __inline IsAllocatedDriver(VOID)
__inline BOOLEAN IsCancelRoutineSet(VOID)
BOOLEAN m_NextStackLocationFormatted
BOOLEAN __inline IsAllocatedFromIo(VOID)
__inline VOID SetCompletionRoutine(__in_opt PFN_WDF_REQUEST_COMPLETION_ROUTINE CompletionRoutine=NULL, __in_opt WDFCONTEXT CompletionContext=NULL)
MdIoCsqIrpContext m_CsqContext
WDFOBJECT_OFFSET_ALIGNED m_SystemBufferOffset
CCHAR __inline GetPriorityBoost(VOID)
FxRequestFromLookaside(__in CfxDevice *Device, __in MdIrp Irp)
_Must_inspect_result_ NTSTATUS GetMemoryObject(__deref_out IFxMemory **Memory, __out PVOID *Buffer, __out size_t *Length)
VOID StopAcknowledge(__in BOOLEAN Requeue)
NTSTATUS CompleteInternal(__in NTSTATUS Status)
FxIoQueue * m_ForwardProgressQueue
static _Must_inspect_result_ NTSTATUS _Create(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in_opt PWDF_OBJECT_ATTRIBUTES RequestAttributes, __in_opt MdIrp Irp, __in_opt FxIoTarget *Target, __in FxRequestIrpOwnership Ownership, __in FxRequestConstructorCaller Caller, __deref_out FxRequest **Request)
_Must_inspect_result_ NTSTATUS InsertHeadIrpQueue(__in FxIrpQueue *IrpQueue, __out_opt ULONG *pRequestCount)
_Must_inspect_result_ NTSTATUS GetParameters(__out PWDF_REQUEST_PARAMETERS Parameters)
VOID PreProcessSendAndForget(VOID)
static _Must_inspect_result_ FxRequest * GetNextRequest(__in FxIrpQueue *IrpQueue)
static __inline FxRequest * RetrieveFromCsqContext(__in PMdIoCsqIrpContext pCsqContext)
FxRequest(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in MdIrp Irp, __in FxRequestIrpOwnership Ownership, __in FxRequestConstructorCaller Caller, __in USHORT ObjectSize)
FxRequestCompletionState SetCompletionState(__in FxRequestCompletionState NewState)
virtual ULONG ReleaseOverride(__in WDFOBJECT_OFFSET Offset, __in PVOID Tag=NULL, __in LONG Line=0, __in_opt PSTR File=NULL)
_Must_inspect_result_ NTSTATUS InsertTailIrpQueue(__in FxIrpQueue *IrpQueue, __out_opt ULONG *pRequestCount)
VOID PostProcessCompletionForReserved(__in FxRequestCompletionState State, __in FxIoQueue *Queue)
KPROCESSOR_MODE GetRequestorMode(VOID)
NTSTATUS SetInformation(__in ULONG_PTR Information)
__inline VOID ClearFieldsForReuse(VOID)
ULONG_PTR GetInformation(VOID)
__inline VOID MarkRemovedFromIrpQueue(VOID)
FxRequestOutputBuffer m_OutputBuffer
BOOLEAN m_ForwardRequestToParent
__inline BOOLEAN IsRequestForwardedToParent(VOID)
VOID PostProcessCompletionForDriverRequest(__in FxRequestCompletionState State, __in FxIoQueue *Queue)
_Must_inspect_result_ NTSTATUS GetDeviceControlOutputMemoryObject(__deref_out IFxMemory **MemoryObject, __out PVOID *Buffer, __out size_t *Length)
LIST_ENTRY m_ForwardProgressList
static _Must_inspect_result_ NTSTATUS _CreateForPackage(__in CfxDevice *Device, __in PWDF_OBJECT_ATTRIBUTES RequestAttributes, __in MdIrp Irp, __deref_out FxRequest **Request)
LIST_ENTRY m_OwnerListEntry
VOID AssignMemoryBuffers(__in WDF_DEVICE_IO_TYPE IoType)
VOID ReleaseIrpReference(VOID)
LIST_ENTRY m_OwnerListEntry2
virtual ULONG Release(__in PVOID Tag, __in LONG Line, __in_opt PSTR File)
VOID PostProcessCompletion(__in FxRequestCompletionState State, __in FxIoQueue *Queue)
_Must_inspect_result_ NTSTATUS GetFileObject(__deref_out_opt FxFileObject **pFileObject)
FxRequestSystemBuffer m_SystemBuffer
__inline BOOLEAN IsReserved()
virtual _Must_inspect_result_ NTSTATUS QueryInterface(__in FxQueryInterfaceParams *Params)
static _Must_inspect_result_ NTSTATUS PeekRequest(__in FxIrpQueue *IrpQueue, __in_opt FxRequest *TagRequest, __in_opt MdFileObject FileObject, __out_opt PWDF_REQUEST_PARAMETERS Parameters, __deref_out FxRequest **ppOutRequest)
virtual ULONG AddRefOverride(__in WDFOBJECT_OFFSET Offset, __in PVOID Tag=NULL, __in LONG Line=0, __in_opt PSTR File=NULL)
_Must_inspect_result_ NTSTATUS Reuse(__in PWDF_REQUEST_REUSE_PARAMS ReuseParams)
_Must_inspect_result_ NTSTATUS RemoveFromIrpQueue(__in FxIrpQueue *IrpQueue)
VOID PreProcessCompletionForDriverRequest(__in FxRequestCompletionState State, __in FxIoQueue *Queue)
VOID PostProcessSendAndForget(VOID)
VOID AddIrpReference(VOID)
static __inline VOID MxFreePool(__in PVOID Ptr)
static __inline MdEThread GetCurrentEThread()
static __inline PVOID MxGetSystemAddressForMdlSafe(__inout PMDL Mdl, __in ULONG Priority)
#define NT_SUCCESS(StatCode)
#define IsListEmpty(ListHead)
#define InitializeListHead(ListHead)
#define KMDF_ONLY_CODE_PATH_ASSERT()
DoTraceLevelMessage(pFxDriverGlobals, TRACE_LEVEL_VERBOSE, TRACINGPNP, "Enter, WDFDEVICE %p", Device)
PFX_DRIVER_GLOBALS pFxDriverGlobals
return pObject GetObjectHandle()
BOOLEAN __inline FxIsFileObjectOptional(__in WDF_FILEOBJECT_CLASS FileObjectClass)
WDF_FILEOBJECT_CLASS __inline FxFileObjectClassNormalize(__in WDF_FILEOBJECT_CLASS FileObjectClass)
pKey SetDeviceBase(pDevice)
FxVerifierDbgBreakPoint(pFxDriverGlobals)
_Must_inspect_result_ NTSTATUS _In_ FxRequest * TagRequest
VOID Request VerifyRequestIsDriverOwned(FxDriverGlobals)
__in MdIrp __in PMdIoCsqIrpContext pCsqContext
#define FX_VF_METHOD(classname, fnName)
_Must_inspect_result_ NTSTATUS _In_ BOOLEAN Requeue
_Must_inspect_result_ NTSTATUS _In_ FxIrpQueue * IrpQueue
VOID _In_ NTSTATUS Status
#define FXREQUEST_STATE_TAG
#define FXREQUEST_COMPLETE_TAG
#define FXREQUEST_FWDPRG_TAG
#define FXREQUEST_DCRC_TAG
@ FxRequestPowerStopAcknowledged
@ FxRequestPowerStopAcknowledgedWithRequeue
@ FxRequestPowerStopUnknown
#define FXREQUEST_QUEUE_TAG
pRequest GetFxIrp() -> GetIoIrp() ->SetUserModeDriverInitiatedIo(IsUserModeDriverInitiated)
@ REQUEST_ALLOCATED_FROM_IO
@ REQUEST_ALLOCATED_DRIVER
@ REQUEST_ALLOCATED_INTERNAL
FxRequestConstructorCaller
@ FxRequestConstructorCallerIsDriver
@ FxRequestConstructorCallerIsFx
#define WDF_REQUEST_REUSE_MUST_COMPLETE
@ FxRequestBaseStaticSystemBufferValid
@ FxRequestBaseStaticOutputBufferValid
@ FxRequestBaseOutputMdlMapped
@ FxRequestBaseSystemMdlMapped
@ FXREQUEST_FLAG_DRIVER_INPROCESS_CONTEXT
@ FXREQUEST_FLAG_TAG_REQUEST
@ FXREQUEST_FLAG_CANCELLED
@ FXREQUEST_FLAG_DRIVER_CANCELABLE
@ FXREQUEST_FLAG_DRIVER_IN_EVTIOSTOP_CONTEXT
@ FXREQUEST_FLAG_SENT_TO_TARGET
@ FXREQUEST_FLAG_DRIVER_OWNED
@ FxRequestCompletionStateIoPkgFlag
@ FxRequestCompletionStateQueue
@ FxRequestCompletionStateNone
_Must_inspect_result_ NTSTATUS FxValidateObjectAttributes(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in PWDF_OBJECT_ATTRIBUTES Attributes, __in ULONG Flags=FX_VALIDATE_OPTION_NONE_SPECIFIED)
#define FxVerifierBugCheck(FxDriverGlobals, Error,...)
GLuint GLuint GLsizei count
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLuint GLsizei GLsizei * length
FxContextHeader * pHeader
PFILE_OBJECT MdFileObject
#define _Must_inspect_result_
#define ASSERTMSG(msg, exp)
#define METHOD_OUT_DIRECT
#define UNREFERENCED_PARAMETER(P)
_In_ ULONG _In_ ULONG Offset
_In_ ULONG _In_ ULONG _In_ ULONG Length
#define STATUS_INTERNAL_ERROR
#define STATUS_ACCESS_VIOLATION
#define IRP_MJ_DEVICE_CONTROL
#define STATUS_BUFFER_TOO_SMALL
#define TRACE_LEVEL_VERBOSE
#define TRACE_LEVEL_FATAL
#define TRACE_LEVEL_ERROR
virtual VOID ReleaseAndRestore(__in FxRequestBase *Request)
__inline VOID SetMdl(__in PMDL Mdl)
virtual _Must_inspect_result_ PMDL GetMdl(VOID)
virtual PVOID GetBuffer(VOID)
virtual size_t GetBufferSize(VOID)
virtual WDFMEMORY GetHandle(VOID)
virtual size_t GetBufferSize(VOID)
virtual _Must_inspect_result_ PVOID GetBuffer(VOID)
__inline VOID SetMdl(PMDL Mdl)
virtual WDFMEMORY GetHandle(VOID)
virtual _Must_inspect_result_ PMDL GetMdl(VOID)
_Must_inspect_result_ BOOLEAN IsVersionGreaterThanOrEqualTo(__in ULONG Major, __in ULONG Minor)
_Must_inspect_result_ BOOLEAN IsVerificationEnabled(__in ULONG Major, __in ULONG Minor, __in FxVerifierDownlevelOption DownLevel)
#define FIELD_OFFSET(t, f)
#define STATUS_INVALID_DEVICE_REQUEST
#define STATUS_INVALID_PARAMETER
#define STATUS_DEVICE_BUSY
#define STATUS_INSUFFICIENT_RESOURCES
@ WDF_REQUEST_FATAL_ERROR
@ WDF_VERIFIER_FATAL_ERROR
@ WDF_REQUEST_FATAL_ERROR_INFORMATION_LENGTH_MISMATCH
_Must_inspect_result_ _In_ WDFDEVICE Device
_Must_inspect_result_ _In_ WDFDMAENABLER _In_ _In_opt_ PWDF_OBJECT_ATTRIBUTES Attributes
_Must_inspect_result_ _In_ WDFDEVICE _In_ BOOLEAN _In_opt_ PVOID Tag
_In_ PWDFDEVICE_INIT _In_ PWDF_OBJECT_ATTRIBUTES RequestAttributes
enum _WDF_REQUEST_TYPE WDF_REQUEST_TYPE
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
_Must_inspect_result_ _In_ WDFDEVICE _In_ PIRP _In_ WDFQUEUE Queue
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
@ WdfFileObjectNotRequired
_Must_inspect_result_ _In_ WDFQUEUE _In_opt_ WDFREQUEST _In_opt_ WDFFILEOBJECT _Inout_opt_ PWDF_REQUEST_PARAMETERS Parameters
_In_ WDFREQUEST _In_ PWDF_REQUEST_REUSE_PARAMS ReuseParams
_In_ WDFIOTARGET _In_ PWDF_REQUEST_COMPLETION_PARAMS Params
_Must_inspect_result_ _In_ WDFREQUEST _In_ size_t _Out_ WDFMEMORY * MemoryObject
@ WDF_REQUEST_REUSE_SET_NEW_IRP
_In_ WDFREQUEST _In_ BOOLEAN Requeue
_In_ WDFREQUEST _In_ NTSTATUS _In_ ULONG_PTR Information
struct _WDF_REQUEST_PARAMETERS WDF_REQUEST_PARAMETERS
#define STATUS_WDF_REQUEST_INVALID_STATE
#define STATUS_WDF_TOO_FRAGMENTED
#define FACILITY_DRIVER_FRAMEWORK
#define STATUS_WDF_PAUSED
#define STATUS_WDF_INTERNAL_ERROR
_Must_inspect_result_ _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFWAITLOCK * Lock
ActualNumberDriverObjects * sizeof(PDRIVER_OBJECT)) PDRIVER_OBJECT *DriverObjectList
#define IRP_INPUT_OPERATION
#define IRP_MJ_INTERNAL_DEVICE_CONTROL