30{
31 BOOLEAN HaveContext =
FALSE, MoreProcessing, AllocatedBuffer;
40
42
43 MoreProcessing =
TRUE;
45 {
46 MoreProcessing =
FALSE;
47 }
48
51 QueueEntry);
53 ((*BytesNotWritten > 0) || (MoreProcessing)));
56 QueueEntry))
57 {
59
61
65 {
67 if (WriteIrp)
68 {
71 }
72 continue;
73 }
74
76 {
77 DataEntry->
Irp->Overlay.AllocationSize.QuadPart = 0;
78 }
79
82
84 {
87 AllocatedBuffer =
TRUE;
88 }
89 else
90 {
92 AllocatedBuffer =
FALSE;
93 }
94
96 {
100 }
102 {
105 }
107
108 if (!HaveContext)
109 {
113 {
116 }
117
119 {
122 }
123 }
124
126 if (WriteIrp)
127 {
130
131 if (AllocatedBuffer)
132 {
135 }
136
137 if (!*BytesNotWritten)
138 {
139 MoreProcessing =
FALSE;
142 continue;
143 }
144
146 {
148 }
149 else
150 {
152 }
153
155 }
156 else if (AllocatedBuffer)
157 {
159 }
160 }
161
162 if (*BytesNotWritten > 0 || MoreProcessing)
163 {
166 }
167 else
168 {
170 }
171
173}
static PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(PIRP Irp)
_Inout_ PFILE_OBJECT _In_ TYPE_OF_OPEN PFCB _In_opt_ PCCB Ccb
PIRP NTAPI NpRemoveDataQueueEntry(IN PNP_DATA_QUEUE DataQueue, IN BOOLEAN Flag, IN PLIST_ENTRY List)
PLIST_ENTRY NTAPI NpGetNextRealDataQueueEntry(IN PNP_DATA_QUEUE DataQueue, IN PLIST_ENTRY List)
#define NT_SUCCESS(StatCode)
NTSTATUS NTAPI NpGetClientSecurityContext(IN ULONG NamedPipeEnd, IN PNP_CCB Ccb, IN PETHREAD Thread, IN PSECURITY_CLIENT_CONTEXT *Context)
#define NPFS_DATA_ENTRY_TAG
VOID NTAPI NpFreeClientSecurityContext(IN PSECURITY_CLIENT_CONTEXT ClientContext)
#define InsertTailList(ListHead, Entry)
#define ExAllocatePoolWithTag(hernya, size, tag)
_In_opt_ PFILE_OBJECT _In_opt_ PETHREAD Thread
#define EXCEPTION_EXECUTE_HANDLER
_In_ NDIS_STATUS _In_ ULONG _In_ USHORT _In_opt_ PVOID _In_ ULONG DataSize
#define FILE_PIPE_MESSAGE_MODE
#define _SEH2_GetExceptionCode()
#define _SEH2_EXCEPT(...)
#define _SEH2_YIELD(__stmt)
#define FSCTL_PIPE_INTERNAL_READ_OVFLOW
_In_ UCHAR _In_ ULONG _Out_ PUCHAR _Outptr_result_bytebuffer_ OutBufferLength PVOID * OutBuffer
#define STATUS_MORE_PROCESSING_REQUIRED
#define STATUS_BUFFER_OVERFLOW
union _IO_STACK_LOCATION::@1579 Parameters
struct _IO_STACK_LOCATION::@3978::@3993 FileSystemControl
union _IRP::@1581 AssociatedIrp
#define RtlCopyMemory(Destination, Source, Length)
#define CONTAINING_RECORD(address, type, field)
#define STATUS_INSUFFICIENT_RESOURCES
_In_ WDFMEMORY _Out_opt_ size_t * BufferSize
_Must_inspect_result_ _In_ WDFCMRESLIST List
#define IRP_DEALLOCATE_BUFFER
#define IRP_INPUT_OPERATION
#define IRP_MJ_FILE_SYSTEM_CONTROL