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++;
693 Flags &= ~IRP_QUOTA_CHARGED;
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",
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))
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",
1687 Irp->AllocationFlags &= ~IRP_LOOKASIDE_ALLOCATION;
1704 List->L.TotalFrees++;
1710 List->L.FreeMisses++;
1714 List->L.TotalFrees++;
1720 List->L.FreeMisses++;
1733 Irp->AllocationFlags &= ~IRP_QUOTA_CHARGED;
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;
1957 "%s - Queueing IRP %p\n",
1974 UCHAR AllocationFlags;
1976 "%s - Reusing IRP %p\n",
1985 AllocationFlags =
Irp->AllocationFlags;
1992 Irp->AllocationFlags = AllocationFlags;
struct _IO_STACK_LOCATION * PIO_STACK_LOCATION
static PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(PIRP Irp)
#define InterlockedIncrement
#define InterlockedExchange
#define InterlockedDecrement
_In_ PFCB _In_ LONGLONG StartingOffset
#define NT_SUCCESS(StatCode)
#define UNIMPLEMENTED_DBGBREAK(...)
#define ExAllocatePoolWithTag(hernya, size, tag)
#define IsListEmpty(ListHead)
#define PsGetCurrentThread()
#define KeRaiseIrql(irql, oldIrql)
#define KeWaitForSingleObject(pEvt, foo, a, b, c)
#define KeInitializeEvent(pEvt, foo, foo2)
#define KeLowerIrql(oldIrql)
#define KeSetEvent(pEvt, foo, foo2)
#define RemoveHeadList(ListHead)
#define InitializeListHead(ListHead)
#define KeDelayExecutionThread(mode, foo, t)
LONG NTAPI KeReadStateEvent(IN PKEVENT Event)
_In_opt_ PFILE_OBJECT _In_opt_ PETHREAD Thread
_Must_inspect_result_ _In_ PLARGE_INTEGER _In_ PLARGE_INTEGER _In_ ULONG _In_ PFILE_OBJECT _In_ PVOID Process
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
VOID FASTCALL KeReleaseQueuedSpinLock(IN KSPIN_LOCK_QUEUE_NUMBER LockNumber, IN KIRQL OldIrql)
KIRQL FASTCALL KeAcquireQueuedSpinLock(IN KSPIN_LOCK_QUEUE_NUMBER LockNumber)
#define KeGetCurrentThread
#define EXCEPTION_EXECUTE_HANDLER
FORCEINLINE VOID IopQueueIrpToThread(IN PIRP Irp)
static __inline VOID IopUpdateTransferCount(IN IOP_TRANSFER_TYPE Type, IN ULONG TransferCount)
static __inline VOID IopUnlockFileObject(IN PFILE_OBJECT FileObject)
FORCEINLINE VOID IopUnQueueIrpFromThread(IN PIRP Irp)
IoSetCancelRoutine(Irp, CancelRoutine)
#define IoSetCompletionRoutine(_Irp, _CompletionRoutine, _Context, _InvokeOnSuccess, _InvokeOnError, _InvokeOnCancel)
VOID NTAPI MmProbeAndLockPages(IN PMDL Mdl, IN KPROCESSOR_MODE AccessMode, IN LOCK_OPERATION Operation)
VOID NTAPI MmUnlockPages(IN PMDL Mdl)
#define ExFreePoolWithTag(_P, _T)
static OUT PIO_STATUS_BLOCK IoStatusBlock
#define IO_METHOD_FROM_CTL_CODE(C)
_In_ NDIS_ERROR_CODE ErrorCode
FORCEINLINE struct _KPRCB * KeGetCurrentPrcb(VOID)
VOID(NTAPI * PKNORMAL_ROUTINE)(IN PVOID NormalContext OPTIONAL, IN PVOID SystemArgument1 OPTIONAL, IN PVOID SystemArgument2 OPTIONAL)
enum _PP_NPAGED_LOOKASIDE_NUMBER PP_NPAGED_LOOKASIDE_NUMBER
#define METHOD_OUT_DIRECT
_In_ ULONG _In_ ULONG _In_ ULONG Length
#define IoCopyCurrentIrpStackLocationToNext(Irp)
#define IO_DRIVER_CANCEL_TIMEOUT
VOID NTAPI IopDoNameTransmogrify(IN PIRP Irp, IN PFILE_OBJECT FileObject, IN PREPARSE_DATA_BUFFER DataBuffer)
#define IOTRACE(x, fmt,...)
#define IsIrpSynchronous(Irp, FileObject)
VOID NTAPI ExReturnPoolQuota(IN PVOID P)
ULONG NTAPI MmGetSessionId(IN PEPROCESS Process)
VOID NTAPI IoWriteErrorLogEntry(IN PVOID ElEntry)
PVOID NTAPI IoAllocateErrorLogEntry(IN PVOID IoObject, IN UCHAR EntrySize)
NTSTATUS FASTCALL IofCallDriver(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
VOID NTAPI IoCancelThreadIo(IN PETHREAD Thread)
VOID NTAPI IoInitializeIrp(IN PIRP Irp, IN USHORT PacketSize, IN CCHAR StackSize)
VOID NTAPI IoQueueThreadIrp(IN PIRP Irp)
VOID FASTCALL IofCompleteRequest(IN PIRP Irp, IN CCHAR PriorityBoost)
ULONG NTAPI IoGetRequestorProcessId(IN PIRP Irp)
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)
VOID NTAPI IopAbortIrpKernelApc(IN PKAPC Apc)
VOID NTAPI IoEnqueueIrp(IN PIRP Irp)
#define IoCompleteRequest
VOID NTAPI IopCompleteRequest(IN PKAPC Apc, IN PKNORMAL_ROUTINE *NormalRoutine, IN PVOID *NormalContext, IN PVOID *SystemArgument1, IN PVOID *SystemArgument2)
BOOLEAN NTAPI IopInitializeReserveIrp(IN PRESERVE_IRP_ALLOCATOR ReserveIrpAllocator)
FORCEINLINE VOID IopClearStackLocation(IN PIO_STACK_LOCATION IoStackLocation)
VOID NTAPI IopFreeIrpKernelApc(IN PKAPC Apc, IN PKNORMAL_ROUTINE *NormalRoutine, IN PVOID *NormalContext, IN PVOID *SystemArgument1, IN PVOID *SystemArgument2)
NTSTATUS NTAPI IopCleanupFailedIrp(IN PFILE_OBJECT FileObject, IN PKEVENT EventObject OPTIONAL, IN PVOID Buffer OPTIONAL)
BOOLEAN NTAPI IoIsOperationSynchronous(IN PIRP Irp)
BOOLEAN NTAPI IoIsValidNameGraftingBuffer(IN PIRP Irp, IN PREPARSE_DATA_BUFFER ReparseBuffer)
PIRP NTAPI IopAllocateReserveIrp(IN CCHAR StackSize)
PIRP NTAPI IoAllocateIrp(IN CCHAR StackSize, IN BOOLEAN ChargeQuota)
VOID NTAPI IopDisassociateThreadIrp(VOID)
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)
PEPROCESS NTAPI IoGetRequestorProcess(IN PIRP Irp)
VOID NTAPI IopAbortInterruptedIrp(IN PKEVENT EventObject, IN PIRP Irp)
PIRP NTAPI IopAllocateIrpMustSucceed(IN CCHAR StackSize)
VOID NTAPI IoReuseIrp(IN OUT PIRP Irp, IN NTSTATUS Status)
NTSTATUS NTAPI IopSynchronousCompletion(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN PVOID Context)
BOOLEAN NTAPI IoCancelIrp(IN PIRP Irp)
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)
PIRP NTAPI IoGetTopLevelIrp(VOID)
VOID IopFreeReserveIrp(IN CCHAR PriorityBoost)
IO_PAGING_PRIORITY FASTCALL IoGetPagingIoPriority(IN PIRP Irp)
BOOLEAN NTAPI IoForwardIrpSynchronously(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
VOID NTAPI IoSetTopLevelIrp(IN PIRP Irp)
VOID NTAPI IoFreeIrp(IN PIRP Irp)
VOID NTAPI IopCleanupIrp(IN PIRP Irp, IN PFILE_OBJECT FileObject)
PIRP NTAPI IoMakeAssociatedIrp(IN PIRP Irp, IN CCHAR StackSize)
NTSTATUS NTAPI IoGetRequestorSessionId(IN PIRP Irp, OUT PULONG pSessionId)
RESERVE_IRP_ALLOCATOR IopReserveIrpAllocator
VOID NTAPI IoReleaseCancelSpinLock(IN KIRQL Irql)
VOID NTAPI IoAcquireCancelSpinLock(OUT PKIRQL Irql)
BOOLEAN NTAPI KeInsertQueueApc(IN PKAPC Apc, IN PVOID SystemArgument1, IN PVOID SystemArgument2, IN KPRIORITY PriorityBoost)
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)
LONG NTAPI KeInsertQueue(IN PKQUEUE Queue, IN PLIST_ENTRY Entry)
#define STATUS_IO_REPARSE_TAG_NOT_HANDLED
VOID NTAPI ObDereferenceObjectDeferDelete(IN PVOID Object)
#define _SEH2_GetExceptionCode()
#define _SEH2_EXCEPT(...)
#define _SEH2_YIELD(__stmt)
#define IRP_MJ_DEVICE_CONTROL
VOID NTAPI KeBugCheckEx(_In_ ULONG BugCheckCode, _In_ ULONG_PTR BugCheckParameter1, _In_ ULONG_PTR BugCheckParameter2, _In_ ULONG_PTR BugCheckParameter3, _In_ ULONG_PTR BugCheckParameter4)
#define STATUS_MORE_PROCESSING_REQUIRED
struct _REPARSE_DATA_BUFFER * PREPARSE_DATA_BUFFER
PULONG MinorVersion OPTIONAL
struct _IO_STACK_LOCATION::@3974::@3979 Write
PDEVICE_OBJECT DeviceObject
struct _IO_STACK_LOCATION::@3974::@3978 Read
PIO_COMPLETION_ROUTINE CompletionRoutine
struct _IO_STACK_LOCATION::@1575::@1576 DeviceIoControl
union _IO_STACK_LOCATION::@1575 Parameters
struct _IO_STACK_LOCATION::@3974::@4013 Others
union _IRP::@1577 AssociatedIrp
PP_LOOKASIDE_LIST PPLookasideList[16]
struct _LIST_ENTRY * Flink
struct _GENERAL_LOOKASIDE * P
struct _GENERAL_LOOKASIDE * L
volatile LONG ReserveIrpInUse
VOID WINAPI DECLSPEC_HOTPATCH Sleep(IN DWORD dwMilliseconds)
#define RtlCopyMemory(Destination, Source, Length)
#define RtlZeroMemory(Destination, Length)
#define CONTAINING_RECORD(address, type, field)
#define STATUS_UNSUCCESSFUL
#define STATUS_VERIFY_REQUIRED
#define STATUS_INSUFFICIENT_RESOURCES
_In_ PDEVICE_OBJECT DeviceObject
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG BufferLength
_In_ WDFDEVICE _In_ PVOID _In_opt_ PMDL Mdl
_In_ WDFDPC _In_ BOOLEAN Wait
_Must_inspect_result_ _In_ PDRIVER_OBJECT DriverObject
_In_ WDFINTERRUPT _In_ WDF_INTERRUPT_POLICY _In_ WDF_INTERRUPT_PRIORITY Priority
_In_ WDFREQUEST _In_ size_t _In_ size_t _In_ ULONG IoControlCode
_In_ WDFREQUEST _In_ size_t OutputBufferLength
_In_ WDFREQUEST _In_ size_t _In_ size_t InputBufferLength
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR OutputBuffer
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR InputBuffer
_In_ WDFREQUEST _In_ NTSTATUS _In_ CCHAR PriorityBoost
_Must_inspect_result_ _In_ WDFCMRESLIST List
_Must_inspect_result_ _In_ ULONG Flags
FORCEINLINE USHORT ExQueryDepthSList(_In_ PSLIST_HEADER SListHead)
#define ExAllocatePoolWithQuotaTag(a, b, c)
struct LOOKASIDE_ALIGN _NPAGED_LOOKASIDE_LIST * PNPAGED_LOOKASIDE_LIST
__drv_aliasesMem FORCEINLINE PIO_STACK_LOCATION IoGetNextIrpStackLocation(_In_ PIRP Irp)
_In_opt_ PDRIVER_CANCEL CancelRoutine
#define IoSizeOfIrp(_StackSize)
_Must_inspect_result_ __drv_aliasesMem _In_ PDEVICE_OBJECT _In_opt_ PVOID _In_ ULONG _Out_opt_ PVOID _In_ ULONG _In_ BOOLEAN InternalDeviceIoControl
_Must_inspect_result_ _In_ BOOLEAN ChargeQuota
#define SL_PENDING_RETURNED
#define IRP_CLASS_CACHE_OPERATION
enum _IO_PAGING_PRIORITY IO_PAGING_PRIORITY
#define IRP_DEALLOCATE_BUFFER
#define IRP_CLOSE_OPERATION
#define IRP_SYNCHRONOUS_API
#define IRP_QUOTA_CHARGED
#define SL_ERROR_RETURNED
#define IRP_INPUT_OPERATION
#define IRP_OB_QUERY_NAME
@ IoPagingPriorityInvalid
#define IRP_WRITE_OPERATION
#define POOL_QUOTA_FAIL_INSTEAD_OF_RAISE
DRIVER_CANCEL * PDRIVER_CANCEL
#define SL_INVOKE_ON_ERROR
#define IRP_CREATE_OPERATION
#define IRP_DEFER_IO_COMPLETION
#define IRP_ASSOCIATED_IRP
#define MAXIMUM_REPARSE_DATA_BUFFER_SIZE
#define SL_INVOKE_ON_CANCEL
#define IRP_MJ_FLUSH_BUFFERS
#define IRP_READ_OPERATION
#define IRP_LOOKASIDE_ALLOCATION
#define IRP_MJ_INTERNAL_DEVICE_CONTROL
#define IRP_ALLOCATED_FIXED_SIZE
#define IO_REPARSE_TAG_MOUNT_POINT
#define FO_SYNCHRONOUS_IO
#define IRP_SYNCHRONOUS_PAGING_IO
#define SL_INVOKE_ON_SUCCESS
_Requires_lock_held_ Interrupt _Releases_lock_ Interrupt _In_ _IRQL_restores_ KIRQL OldIrql
_In_opt_ PVOID _In_opt_ PVOID SystemArgument1
@ LockQueueIoCompletionLock
_In_opt_ PVOID _In_opt_ PVOID _In_opt_ PVOID SystemArgument2
#define ObDereferenceObject
#define InterlockedPushEntrySList(SListHead, SListEntry)
#define InterlockedPopEntrySList(SListHead)