89 Wait.QuadPart = -100000;
143 "%s - Deassociating IRP %p for %p\n",
196 "%s - Cleaning IRP %p for %p\n",
202 while ((
Mdl =
Irp->MdlAddress))
205 Irp->MdlAddress =
Mdl->Next;
217 if ((
Irp->UserEvent) &&
254 "%s - Completing IRP %p for %p\n",
293 Irp->AssociatedIrp.SystemBuffer,
294 Irp->IoStatus.Information);
332 (
Irp->PendingReturned &&
350 *
Irp->UserIosb =
Irp->IoStatus;
395 Irp->Overlay.AsynchronousParameters.UserApcRoutine =
NULL;
396 SignaledCreateRequest =
TRUE;
413 Irp->Overlay.AsynchronousParameters.UserApcRoutine =
NULL;
414 SignaledCreateRequest =
TRUE;
445 if (
Irp->Overlay.AsynchronousParameters.UserApcRoutine)
454 Overlay.AsynchronousParameters.UserApcRoutine,
457 Overlay.AsynchronousParameters.UserApcContext);
463 (
Irp->Overlay.AsynchronousParameters.UserApcContext))
466 Irp->Tail.CompletionKey =
Key;
495 *
Irp->UserIosb =
Irp->IoStatus;
531 if ((
Irp->UserEvent) &&
552 ReserveIrpAllocator->StackSize = 20;
555 ReserveIrpAllocator->ReserveIrp =
IoAllocateIrp(ReserveIrpAllocator->StackSize,
FALSE);
557 if (ReserveIrpAllocator->ReserveIrp ==
NULL)
563 ReserveIrpAllocator->ReserveIrpInUse = 0;
648 List->L.TotalAllocates++;
655 List->L.AllocateMisses++;
659 List->L.TotalAllocates++;
704 "%s - Allocated IRP %p with allocation flags %lx\n",
733 Sleep.QuadPart = -10 * 1000 * 10;
780 Irp->AssociatedIrp.SystemBuffer =
782 if (!
Irp->AssociatedIrp.SystemBuffer)
813 if (!
Irp->MdlAddress)
867 "%s - Built IRP %p with Major, Buffer, DO %lx %p %p\n",
910 StackPtr->
Parameters.DeviceIoControl.OutputBufferLength =
927 Irp->AssociatedIrp.SystemBuffer =
931 if (!
Irp->AssociatedIrp.SystemBuffer)
970 Irp->AssociatedIrp.SystemBuffer =
974 if (!
Irp->AssociatedIrp.SystemBuffer)
1004 if (!
Irp->MdlAddress)
1054 "%s - Built IRP %p with IOCTL, Buffers, DO %lx %p %p %p\n",
1106 "%s - Canceling IRP %p\n",
1120 if (
Irp->CurrentLocation > (
Irp->StackCount + 1))
1149 ULONG Retries = 3000;
1159 "%s - Canceling IRPs for Thread %p\n",
1168 NextEntry = ListHead->
Flink;
1169 while (ListHead != NextEntry)
1178 NextEntry = NextEntry->
Flink;
1200 DPRINT1(
"Broken driver did not complete!\n");
1225 #define IoCallDriver IofCallDriver 1230 #undef IoCompleteRequest 1240 #define IoCompleteRequest IofCompleteRequest 1271 Irp->CurrentLocation--;
1272 if (
Irp->CurrentLocation <= 0)
1280 Irp->Tail.Overlay.CurrentStackLocation = StackPtr;
1294 IoStackLocation->MinorFunction = 0;
1295 IoStackLocation->Flags = 0;
1297 IoStackLocation->Parameters.Others.Argument1 = 0;
1298 IoStackLocation->Parameters.Others.Argument2 = 0;
1299 IoStackLocation->Parameters.Others.Argument3 = 0;
1300 IoStackLocation->FileObject =
NULL;
1323 "%s - Completing IRP %p\n",
1328 if ((
Irp->CurrentLocation) > (
Irp->StackCount + 1))
1357 Irp->CurrentLocation++,
1358 Irp->Tail.Overlay.CurrentStackLocation++;
1359 Irp->CurrentLocation <= (
Irp->StackCount + 1);
1361 Irp->CurrentLocation++,
1362 Irp->Tail.Overlay.CurrentStackLocation++)
1393 if (
Irp->CurrentLocation == (
Irp->StackCount + 1))
1415 if ((
Irp->CurrentLocation <=
Irp->StackCount) &&
1416 (
Irp->PendingReturned))
1431 MasterIrp =
Irp->AssociatedIrp.MasterIrp;
1438 NextMdl =
Mdl->Next;
1460 Irp->Tail.Overlay.AuxiliaryBuffer =
NULL;
1470 if (
Irp->Tail.Overlay.AuxiliaryBuffer)
1474 Irp->Tail.Overlay.AuxiliaryBuffer =
NULL;
1485 *
Irp->UserIosb =
Irp->IoStatus;
1510 &
Irp->Tail.Overlay.Thread->Tcb,
1511 Irp->ApcEnvironment,
1512 IopCompletePageWrite,
1546 Irp->Tail.Overlay.AuxiliaryBuffer = (
PCHAR)DataBuffer;
1566 Irp->ApcEnvironment,
1587 Irp->ApcEnvironment,
1615 if (
Irp->PendingReturned)
1632 if (
Irp->CurrentLocation >
Irp->StackCount ||
Irp->CurrentLocation <= 1)
1672 "%s - Freeing IRPs %p\n",
1704 List->L.TotalFrees++;
1710 List->L.FreeMisses++;
1714 List->L.TotalFrees++;
1720 List->L.FreeMisses++;
1785 if (
Irp->Tail.Overlay.Thread)
1789 return Irp->Tail.Overlay.Thread->ThreadsProcess;
1793 return (
PEPROCESS)
Irp->Tail.Overlay.Thread->Tcb.ApcState.Process;
1827 if (
Irp->Tail.Overlay.Thread)
1829 Process =
Irp->Tail.Overlay.Thread->ThreadsProcess;
1834 *pSessionId = (
ULONG)-1;
1860 "%s - Initializing IRP %p\n",
1898 if (SynchIO && !ForceAsync)
1930 "%s - Associating IRP %p\n",
1936 if (!AssocIrp)
return NULL;
1942 AssocIrp->Tail.Overlay.Thread =
Irp->Tail.Overlay.Thread;
1945 AssocIrp->AssociatedIrp.MasterIrp =
Irp;
1957 "%s - Queueing IRP %p\n",
1974 UCHAR AllocationFlags;
1976 "%s - Reusing IRP %p\n",
1985 AllocationFlags =
Irp->AllocationFlags;
1992 Irp->AllocationFlags = AllocationFlags;
2006 #if defined (_WIN64) VOID NTAPI IopCompleteRequest(IN PKAPC Apc, IN PKNORMAL_ROUTINE *NormalRoutine, IN PVOID *NormalContext, IN PVOID *SystemArgument1, IN PVOID *SystemArgument2)
VOID NTAPI KeInitializeApc(IN PKAPC Apc, IN PKTHREAD Thread, IN KAPC_ENVIRONMENT TargetEnvironment, IN PKKERNEL_ROUTINE KernelRoutine, IN PKRUNDOWN_ROUTINE RundownRoutine OPTIONAL, IN PKNORMAL_ROUTINE NormalRoutine, IN KPROCESSOR_MODE Mode, IN PVOID Context)
PEPROCESS NTAPI IoGetRequestorProcess(IN PIRP Irp)
NTSTATUS NTAPI IoGetRequestorSessionId(IN PIRP Irp, OUT PULONG pSessionId)
VOID NTAPI IoCancelThreadIo(IN PETHREAD Thread)
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG BufferLength
DRIVER_CANCEL * PDRIVER_CANCEL
#define KeRaiseIrql(irql, oldIrql)
VOID WINAPI DECLSPEC_HOTPATCH Sleep(IN DWORD dwMilliseconds)
#define IRP_OB_QUERY_NAME
#define STATUS_INSUFFICIENT_RESOURCES
_In_ NDIS_ERROR_CODE ErrorCode
#define KeLowerIrql(oldIrql)
_In_ ULONG _In_ ULONG _In_ ULONG Length
#define IRP_ALLOCATED_FIXED_SIZE
PVOID NTAPI ExAllocatePoolWithQuotaTag(IN POOL_TYPE PoolType, IN SIZE_T NumberOfBytes, IN ULONG Tag)
#define SL_PENDING_RETURNED
RESERVE_IRP_ALLOCATOR IopReserveIrpAllocator
#define IRP_CLOSE_OPERATION
_In_ PFCB _In_ LONGLONG StartingOffset
_Must_inspect_result_ _In_ BOOLEAN ChargeQuota
#define IRP_MJ_FLUSH_BUFFERS
static __inline VOID IopUpdateTransferCount(IN IOP_TRANSFER_TYPE Type, IN ULONG TransferCount)
VOID NTAPI IoReuseIrp(IN OUT PIRP Irp, IN NTSTATUS Status)
#define PsGetCurrentThread()
IO_PAGING_PRIORITY FASTCALL IoGetPagingIoPriority(IN PIRP Irp)
VOID NTAPI IopAbortInterruptedIrp(IN PKEVENT EventObject, IN PIRP Irp)
#define STATUS_MORE_PROCESSING_REQUIRED
#define IRP_CLASS_CACHE_OPERATION
PIRP NTAPI IoBuildSynchronousFsdRequest(IN ULONG MajorFunction, IN PDEVICE_OBJECT DeviceObject, IN PVOID Buffer, IN ULONG Length, IN PLARGE_INTEGER StartingOffset, IN PKEVENT Event, IN PIO_STATUS_BLOCK IoStatusBlock)
IN BOOLEAN OUT PSTR Buffer
#define IRP_QUOTA_CHARGED
VOID NTAPI IopAbortIrpKernelApc(IN PKAPC Apc)
BOOLEAN NTAPI IoForwardIrpSynchronously(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
_In_ WDFDPC _In_ BOOLEAN Wait
_Must_inspect_result_ __drv_aliasesMem _In_ PDEVICE_OBJECT _In_opt_ PVOID _In_ ULONG _Out_opt_ PVOID _In_ ULONG _In_ BOOLEAN InternalDeviceIoControl
FORCEINLINE struct _KPRCB * KeGetCurrentPrcb(VOID)
#define STATUS_IO_REPARSE_TAG_NOT_HANDLED
VOID NTAPI IopFreeIrpKernelApc(IN PKAPC Apc, IN PKNORMAL_ROUTINE *NormalRoutine, IN PVOID *NormalContext, IN PVOID *SystemArgument1, IN PVOID *SystemArgument2)
VOID NTAPI IoAcquireCancelSpinLock(OUT PKIRQL Irql)
IN PVOID IN PVOID IN USHORT IN USHORT Size
VOID NTAPI MmUnlockPages(IN PMDL Mdl)
#define IO_DRIVER_CANCEL_TIMEOUT
BOOLEAN NTAPI IoIsValidNameGraftingBuffer(IN PIRP Irp, IN PREPARSE_DATA_BUFFER ReparseBuffer)
PIRP NTAPI IopAllocateReserveIrp(IN CCHAR StackSize)
_In_ WDFREQUEST _In_ size_t _In_ size_t InputBufferLength
BOOLEAN NTAPI IoIsOperationSynchronous(IN PIRP Irp)
VOID NTAPI IoEnqueueIrp(IN PIRP Irp)
VOID NTAPI IoQueueThreadIrp(IN PIRP Irp)
#define STATUS_VERIFY_REQUIRED
IoSetCancelRoutine(Irp, CancelRoutine)
LONG NTAPI KeSetEvent(IN PKEVENT Event, IN KPRIORITY Increment, IN BOOLEAN Wait)
NTSTATUS NTAPI KeWaitForSingleObject(IN PVOID Object, IN KWAIT_REASON WaitReason, IN KPROCESSOR_MODE WaitMode, IN BOOLEAN Alertable, IN PLARGE_INTEGER Timeout OPTIONAL)
VOID NTAPI IoInitializeIrp(IN PIRP Irp, IN USHORT PacketSize, IN CCHAR StackSize)
_Must_inspect_result_ FORCEINLINE BOOLEAN IsListEmpty(_In_ const LIST_ENTRY *ListHead)
VOID NTAPI IoWriteErrorLogEntry(IN PVOID ElEntry)
PSLIST_ENTRY WINAPI InterlockedPopEntrySList(PSLIST_HEADER ListHead)
struct LOOKASIDE_ALIGN _NPAGED_LOOKASIDE_LIST * PNPAGED_LOOKASIDE_LIST
#define IoSetCompletionRoutine(_Irp, _CompletionRoutine, _Context, _InvokeOnSuccess, _InvokeOnError, _InvokeOnCancel)
#define FO_SYNCHRONOUS_IO
#define IO_REPARSE_TAG_MOUNT_POINT
_In_ WDFREQUEST _In_ size_t OutputBufferLength
FORCEINLINE VOID IoCopyCurrentIrpStackLocationToNext(_Inout_ PIRP Irp)
_In_ PDEVICE_OBJECT DeviceObject
PP_LOOKASIDE_LIST PPLookasideList[16]
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
_In_ WDFREQUEST _In_ NTSTATUS _In_ CCHAR PriorityBoost
VOID NTAPI ObDereferenceObjectDeferDelete(IN PVOID Object)
NTSTATUS NTAPI KeDelayExecutionThread(IN KPROCESSOR_MODE WaitMode, IN BOOLEAN Alertable, IN PLARGE_INTEGER Interval OPTIONAL)
#define IRP_ASSOCIATED_IRP
_In_ PVOID _In_ ULONG Event
#define EXCEPTION_EXECUTE_HANDLER
_In_opt_ PDRIVER_CANCEL CancelRoutine
NTSTATUS NTAPI IopSynchronousCompletion(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN PVOID Context)
ULONG NTAPI IoGetRequestorProcessId(IN PIRP Irp)
#define IoCompleteRequest
FORCEINLINE PLIST_ENTRY RemoveHeadList(_Inout_ PLIST_ENTRY ListHead)
_Must_inspect_result_ _In_ WDFDEVICE _In_ ULONG _In_ ACCESS_MASK _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFKEY * Key
FORCEINLINE VOID IopQueueIrpToThread(IN PIRP Irp)
PIO_COMPLETION_ROUTINE CompletionRoutine
PIRP NTAPI IoMakeAssociatedIrp(IN PIRP Irp, IN CCHAR StackSize)
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
_Must_inspect_result_ _In_ PDRIVER_OBJECT DriverObject
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR OutputBuffer
struct _IO_STACK_LOCATION * PIO_STACK_LOCATION
PVOID NTAPI IoAllocateErrorLogEntry(IN PVOID IoObject, IN UCHAR EntrySize)
_In_opt_ PVOID _In_opt_ PVOID SystemArgument1
VOID FASTCALL IofCompleteRequest(IN PIRP Irp, IN CCHAR PriorityBoost)
struct _LIST_ENTRY * Flink
enum _IO_PAGING_PRIORITY IO_PAGING_PRIORITY
#define METHOD_OUT_DIRECT
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR InputBuffer
_Must_inspect_result_ _In_ ULONG Flags
#define _SEH2_YIELD(STMT_)
#define IRP_LOOKASIDE_ALLOCATION
#define NT_SUCCESS(StatCode)
#define ObDereferenceObject
#define IRP_READ_OPERATION
volatile LONG ReserveIrpInUse
PIRP NTAPI IoBuildAsynchronousFsdRequest(IN ULONG MajorFunction, IN PDEVICE_OBJECT DeviceObject, IN PVOID Buffer, IN ULONG Length, IN PLARGE_INTEGER StartingOffset, IN PIO_STATUS_BLOCK IoStatusBlock)
VOID FASTCALL KeReleaseQueuedSpinLock(IN KSPIN_LOCK_QUEUE_NUMBER LockNumber, IN KIRQL OldIrql)
PDEVICE_OBJECT DeviceObject
PIRP NTAPI IoGetTopLevelIrp(VOID)
_In_opt_ PFILE_OBJECT _In_opt_ PETHREAD Thread
VOID NTAPI ExReturnPoolQuota(IN PVOID P)
FORCEINLINE USHORT ExQueryDepthSList(_In_ PSLIST_HEADER SListHead)
#define IRP_MJ_INTERNAL_DEVICE_CONTROL
VOID NTAPI IoFreeMdl(PMDL Mdl)
#define SL_INVOKE_ON_ERROR
#define IOTRACE(x, fmt,...)
#define STATUS_UNSUCCESSFUL
struct _GENERAL_LOOKASIDE * L
#define ExAllocatePoolWithTag(hernya, size, tag)
_In_ WDFINTERRUPT _In_ WDF_INTERRUPT_POLICY _In_ WDF_INTERRUPT_PRIORITY Priority
VOID NTAPI IoSetTopLevelIrp(IN PIRP Irp)
#define InterlockedDecrement
_Requires_lock_held_ Interrupt _Releases_lock_ Interrupt _In_ _IRQL_restores_ KIRQL OldIrql
NTSTATUS NTAPI IopCleanupFailedIrp(IN PFILE_OBJECT FileObject, IN PKEVENT EventObject OPTIONAL, IN PVOID Buffer OPTIONAL)
_Must_inspect_result_ _In_ WDFCMRESLIST List
_In_ WDFREQUEST _In_ size_t _In_ size_t _In_ ULONG IoControlCode
NTKERNELAPI PSLIST_ENTRY FASTCALL InterlockedPushEntrySList(IN PSLIST_HEADER ListHead, IN PSLIST_ENTRY ListEntry)
_In_ USHORT _In_ CCHAR StackSize
__drv_aliasesMem FORCEINLINE PIO_STACK_LOCATION IoGetNextIrpStackLocation(_In_ PIRP Irp)
KIRQL FASTCALL KeAcquireQueuedSpinLock(IN KSPIN_LOCK_QUEUE_NUMBER LockNumber)
#define InterlockedExchange
VOID NTAPI IoReleaseCancelSpinLock(IN KIRQL Irql)
_In_opt_ PVOID _In_opt_ PVOID _In_opt_ PVOID SystemArgument2
VOID IopFreeReserveIrp(IN CCHAR PriorityBoost)
PMDL NTAPI IoAllocateMdl(IN PVOID VirtualAddress, IN ULONG Length, IN BOOLEAN SecondaryBuffer, IN BOOLEAN ChargeQuota, IN PIRP Irp)
FORCEINLINE VOID IopUnQueueIrpFromThread(IN PIRP Irp)
__drv_aliasesMem FORCEINLINE PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(_In_ PIRP Irp)
#define KeInitializeEvent(pEvt, foo, foo2)
#define IRP_INPUT_OPERATION
#define InterlockedIncrement
VOID NTAPI MmProbeAndLockPages(IN PMDL Mdl, IN KPROCESSOR_MODE AccessMode, IN LOCK_OPERATION Operation)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
struct _GENERAL_LOOKASIDE * P
#define IO_METHOD_FROM_CTL_CODE(C)
#define SL_INVOKE_ON_SUCCESS
#define IoSizeOfIrp(_StackSize)
#define InitializeListHead(ListHead)
LONG NTAPI KeInsertQueue(IN PKQUEUE Queue, IN PLIST_ENTRY Entry)
static OUT PIO_STATUS_BLOCK IoStatusBlock
PIRP NTAPI IopAllocateIrpMustSucceed(IN CCHAR StackSize)
_In_ WDFDEVICE _In_ PVOID _In_opt_ PMDL Mdl
BOOLEAN NTAPI KeInsertQueueApc(IN PKAPC Apc, IN PVOID SystemArgument1, IN PVOID SystemArgument2, IN KPRIORITY PriorityBoost)
static __inline VOID IopUnlockFileObject(IN PFILE_OBJECT FileObject)
#define UNIMPLEMENTED_DBGBREAK(...)
PIRP NTAPI IoBuildDeviceIoControlRequest(IN ULONG IoControlCode, IN PDEVICE_OBJECT DeviceObject, IN PVOID InputBuffer, IN ULONG InputBufferLength, IN PVOID OutputBuffer, IN ULONG OutputBufferLength, IN BOOLEAN InternalDeviceIoControl, IN PKEVENT Event, IN PIO_STATUS_BLOCK IoStatusBlock)
BOOLEAN NTAPI IoCancelIrp(IN PIRP Irp)
#define IRP_DEALLOCATE_BUFFER
#define IsIrpSynchronous(Irp, FileObject)
FORCEINLINE VOID IopClearStackLocation(IN PIO_STACK_LOCATION IoStackLocation)
_Must_inspect_result_ _In_ PLARGE_INTEGER _In_ PLARGE_INTEGER _In_ ULONG _In_ PFILE_OBJECT _In_ PVOID Process
LONG NTAPI KeReadStateEvent(IN PKEVENT Event)
VOID NTAPI IoFreeIrp(IN PIRP Irp)
#define SL_INVOKE_ON_CANCEL
enum _PP_NPAGED_LOOKASIDE_NUMBER PP_NPAGED_LOOKASIDE_NUMBER
#define RtlZeroMemory(Destination, Length)
VOID NTAPI IopDoNameTransmogrify(IN PIRP Irp, IN PFILE_OBJECT FileObject, IN PREPARSE_DATA_BUFFER DataBuffer)
#define IRP_SYNCHRONOUS_API
#define IRP_CREATE_OPERATION
ULONG NTAPI MmGetSessionId(IN PEPROCESS Process)
#define SL_ERROR_RETURNED
#define RtlCopyMemory(Destination, Source, Length)
PIRP NTAPI IoAllocateIrp(IN CCHAR StackSize, IN BOOLEAN ChargeQuota)
#define POOL_QUOTA_FAIL_INSTEAD_OF_RAISE
#define _SEH2_EXCEPT(...)
BOOLEAN NTAPI IopInitializeReserveIrp(IN PRESERVE_IRP_ALLOCATOR ReserveIrpAllocator)
#define ExFreePoolWithTag(_P, _T)
#define IRP_DEFER_IO_COMPLETION
#define _SEH2_GetExceptionCode()
VOID(NTAPI * PKNORMAL_ROUTINE)(IN PVOID NormalContext OPTIONAL, IN PVOID SystemArgument1 OPTIONAL, IN PVOID SystemArgument2 OPTIONAL)
#define IRP_WRITE_OPERATION
#define KeGetCurrentThread
struct _NAMED_PIPE_CREATE_PARAMETERS * Parameters
VOID NTAPI IopDisassociateThreadIrp(VOID)
#define MAXIMUM_REPARSE_DATA_BUFFER_SIZE
NTSTATUS FASTCALL IofCallDriver(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
struct _REPARSE_DATA_BUFFER * PREPARSE_DATA_BUFFER
VOID NTAPI KeBugCheckEx(_In_ ULONG BugCheckCode, _In_ ULONG_PTR BugCheckParameter1, _In_ ULONG_PTR BugCheckParameter2, _In_ ULONG_PTR BugCheckParameter3, _In_ ULONG_PTR BugCheckParameter4)
#define IRP_SYNCHRONOUS_PAGING_IO
#define IRP_MJ_DEVICE_CONTROL
VOID NTAPI IopCleanupIrp(IN PIRP Irp, IN PFILE_OBJECT FileObject)
PULONG MinorVersion OPTIONAL