47 Irp->IoStatus.Information = 0;
55 while (current_entry != &DeviceExtension->
FcbListHead)
64 current_entry = current_entry->
Flink;
73 Irp->IoStatus.Information = 0;
86 Fcb->ReferenceCount++;
97 Irp->IoStatus.Information = 0;
133 Irp->IoStatus.Information = 0;
143 Fcb->Name.MaximumLength,
150 Irp->IoStatus.Information = 0;
166 Irp->IoStatus.Information = 0;
173 Fcb->ReferenceCount = 0;
177 Fcb->MaxMessageSize =
Buffer->MaximumMessageSize;
178 Fcb->MessageCount = 0;
196 while (current_entry != &DeviceExtension->
FcbListHead)
205 current_entry = current_entry->
Flink;
208 if (current_entry != &DeviceExtension->
FcbListHead)
217 Irp->IoStatus.Information = 0;
233 Fcb->ReferenceCount++;
244 Irp->IoStatus.Information = 0;
277 Irp->IoStatus.Information = 0;
287 DPRINT(
"Mailslot name: %wZ\n", &
Fcb->Name);
289 Fcb->ReferenceCount--;
290 if (
Fcb->ServerCcb ==
Ccb)
295 while (
Fcb->MessageListHead.Flink != &
Fcb->MessageListHead)
304 Fcb->MessageCount = 0;
316 if (
Fcb->ReferenceCount == 0)
318 DPRINT(
"ReferenceCount == 0: Deleting mailslot data\n");
327 Irp->IoStatus.Information = 0;
static PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(PIRP Irp)
_Inout_ PFILE_OBJECT _In_ TYPE_OF_OPEN PFCB _In_opt_ PCCB Ccb
NTKERNELAPI NTSTATUS NTAPI IoCsqInitialize(_Out_ PIO_CSQ Csq, _In_ PIO_CSQ_INSERT_IRP CsqInsertIrp, _In_ PIO_CSQ_REMOVE_IRP CsqRemoveIrp, _In_ PIO_CSQ_PEEK_NEXT_IRP CsqPeekNextIrp, _In_ PIO_CSQ_ACQUIRE_LOCK CsqAcquireLock, _In_ PIO_CSQ_RELEASE_LOCK CsqReleaseLock, _In_ PIO_CSQ_COMPLETE_CANCELED_IRP CsqCompleteCanceledIrp)
Set up a CSQ struct to initialize the queue.
static const WCHAR Message[]
#define RemoveEntryList(Entry)
#define InsertTailList(ListHead, Entry)
#define ExAllocatePoolWithTag(hernya, size, tag)
ULONG RtlCompareUnicodeString(PUNICODE_STRING s1, PUNICODE_STRING s2, BOOLEAN UpCase)
#define KeReleaseSpinLock(sl, irql)
#define KeAcquireSpinLock(sl, irql)
#define InitializeListHead(ListHead)
#define KeInitializeSpinLock(sl)
struct task_struct * current
#define ExFreePoolWithTag(_P, _T)
DRIVER_DISPATCH MsfsClose
IO_CSQ_REMOVE_IRP MsfsRemoveIrp
IO_CSQ_ACQUIRE_LOCK MsfsAcquireLock
DRIVER_DISPATCH MsfsCreateMailslot
IO_CSQ_RELEASE_LOCK MsfsReleaseLock
IO_CSQ_COMPLETE_CANCELED_IRP MsfsCompleteCanceledIrp
IO_CSQ_PEEK_NEXT_IRP MsfsPeekNextIrp
DRIVER_DISPATCH MsfsCreate
IO_CSQ_INSERT_IRP MsfsInsertIrp
NTSYSAPI VOID NTAPI RtlCopyUnicodeString(PUNICODE_STRING DestinationString, PUNICODE_STRING SourceString)
#define IoCompleteRequest
struct _FCB::@734::@737 Fcb
struct _IO_STACK_LOCATION::@4024::@4027 CreateMailslot
union _IO_STACK_LOCATION::@1584 Parameters
struct _LIST_ENTRY * Flink
#define CONTAINING_RECORD(address, type, field)
#define STATUS_UNSUCCESSFUL
_In_ PDEVICE_OBJECT DeviceObject
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject