Update Indentation (tab->4spaces).
[reactos.git] / reactos / drivers / filesystems / ms / create.c
index a529a79..b88ae29 100644 (file)
@@ -2,9 +2,9 @@
  *
  * COPYRIGHT:  See COPYING in the top level directory
  * PROJECT:    ReactOS kernel
- * FILE:       services/fs/ms/create.c
+ * FILE:       drivers/filesystems/ms/create.c
  * PURPOSE:    Mailslot filesystem
- * PROGRAMMER: Eric Kohl <ekohl@rz-online.de>
+ * PROGRAMMER: Eric Kohl
  */
 
 /* INCLUDES ******************************************************************/
 
 NTSTATUS DEFAULTAPI
 MsfsCreate(PDEVICE_OBJECT DeviceObject,
-          PIRP Irp)
+           PIRP Irp)
 {
-   PIO_STACK_LOCATION IoStack;
-   PFILE_OBJECT FileObject;
-   PMSFS_DEVICE_EXTENSION DeviceExtension;
-   PMSFS_FCB Fcb;
-   PMSFS_CCB Ccb;
-   PMSFS_FCB current = NULL;
-   PLIST_ENTRY current_entry;
-   KIRQL oldIrql;
+    PIO_STACK_LOCATION IoStack;
+    PFILE_OBJECT FileObject;
+    PMSFS_DEVICE_EXTENSION DeviceExtension;
+    PMSFS_FCB Fcb;
+    PMSFS_CCB Ccb;
+    PMSFS_FCB current = NULL;
+    PLIST_ENTRY current_entry;
+    KIRQL oldIrql;
 
-   DPRINT("MsfsCreate(DeviceObject %p Irp %p)\n", DeviceObject, Irp);
+    DPRINT("MsfsCreate(DeviceObject %p Irp %p)\n", DeviceObject, Irp);
 
-   IoStack = IoGetCurrentIrpStackLocation(Irp);
-   DeviceExtension = DeviceObject->DeviceExtension;
-   FileObject = IoStack->FileObject;
+    IoStack = IoGetCurrentIrpStackLocation(Irp);
+    DeviceExtension = DeviceObject->DeviceExtension;
+    FileObject = IoStack->FileObject;
 
-   DPRINT("Mailslot name: %wZ\n", &FileObject->FileName);
+    DPRINT("Mailslot name: %wZ\n", &FileObject->FileName);
 
-   Ccb = ExAllocatePool(NonPagedPool, sizeof(MSFS_CCB));
-   if (Ccb == NULL)
-     {
-       Irp->IoStatus.Status = STATUS_NO_MEMORY;
-       Irp->IoStatus.Information = 0;
+    Ccb = ExAllocatePool(NonPagedPool, sizeof(MSFS_CCB));
+    if (Ccb == NULL)
+    {
+        Irp->IoStatus.Status = STATUS_NO_MEMORY;
+        Irp->IoStatus.Information = 0;
 
-       IoCompleteRequest(Irp, IO_NO_INCREMENT);
+        IoCompleteRequest(Irp, IO_NO_INCREMENT);
+        return STATUS_NO_MEMORY;
+    }
 
-       return(STATUS_NO_MEMORY);
-     }
+    KeLockMutex(&DeviceExtension->FcbListLock);
+    current_entry = DeviceExtension->FcbListHead.Flink;
+    while (current_entry != &DeviceExtension->FcbListHead)
+    {
+        current = CONTAINING_RECORD(current_entry,
+                                    MSFS_FCB,
+                                    FcbListEntry);
 
-   KeLockMutex(&DeviceExtension->FcbListLock);
-   current_entry = DeviceExtension->FcbListHead.Flink;
-   while (current_entry != &DeviceExtension->FcbListHead)
-     {
-       current = CONTAINING_RECORD(current_entry,
-                                   MSFS_FCB,
-                                   FcbListEntry);
+        if (!RtlCompareUnicodeString(&FileObject->FileName, &current->Name, TRUE))
+            break;
 
-       if (!RtlCompareUnicodeString(&FileObject->FileName, &current->Name, TRUE))
-         {
-            break;
-         }
+        current_entry = current_entry->Flink;
+    }
 
-       current_entry = current_entry->Flink;
-     }
+    if (current_entry == &DeviceExtension->FcbListHead)
+    {
+        ExFreePool(Ccb);
+        KeUnlockMutex(&DeviceExtension->FcbListLock);
 
-   if (current_entry == &DeviceExtension->FcbListHead)
-     {
-       ExFreePool(Ccb);
-       KeUnlockMutex(&DeviceExtension->FcbListLock);
+        Irp->IoStatus.Status = STATUS_UNSUCCESSFUL;
+        Irp->IoStatus.Information = 0;
 
-       Irp->IoStatus.Status = STATUS_UNSUCCESSFUL;
-       Irp->IoStatus.Information = 0;
+        IoCompleteRequest(Irp, IO_NO_INCREMENT);
 
-       IoCompleteRequest(Irp, IO_NO_INCREMENT);
+        return STATUS_UNSUCCESSFUL;
+    }
 
-       return(STATUS_UNSUCCESSFUL);
-     }
+    Fcb = current;
 
-   Fcb = current;
+    KeAcquireSpinLock(&Fcb->CcbListLock, &oldIrql);
+    InsertTailList(&Fcb->CcbListHead, &Ccb->CcbListEntry);
+    KeReleaseSpinLock(&Fcb->CcbListLock, oldIrql);
 
-   KeAcquireSpinLock(&Fcb->CcbListLock, &oldIrql);
-   InsertTailList(&Fcb->CcbListHead, &Ccb->CcbListEntry);
-   KeReleaseSpinLock(&Fcb->CcbListLock, oldIrql);
+    Fcb->ReferenceCount++;
 
-   Fcb->ReferenceCount++;
+    Ccb->Fcb = Fcb;
 
-   Ccb->Fcb = Fcb;
+    KeUnlockMutex(&DeviceExtension->FcbListLock);
 
-   KeUnlockMutex(&DeviceExtension->FcbListLock);
+    FileObject->FsContext = Fcb;
+    FileObject->FsContext2 = Ccb;
+    FileObject->Flags |= FO_MAILSLOT;
 
-   FileObject->FsContext = Fcb;
-   FileObject->FsContext2 = Ccb;
-   FileObject->Flags |= FO_MAILSLOT;
+    Irp->IoStatus.Status = STATUS_SUCCESS;
+    Irp->IoStatus.Information = 0;
 
-   Irp->IoStatus.Status = STATUS_SUCCESS;
-   Irp->IoStatus.Information = 0;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
 
-   IoCompleteRequest(Irp, IO_NO_INCREMENT);
-
-   return(STATUS_SUCCESS);
+    return STATUS_SUCCESS;
 }
 
 
 NTSTATUS DEFAULTAPI
 MsfsCreateMailslot(PDEVICE_OBJECT DeviceObject,
-                  PIRP Irp)
+                   PIRP Irp)
 {
-   PEXTENDED_IO_STACK_LOCATION IoStack;
-   PFILE_OBJECT FileObject;
-   PMSFS_DEVICE_EXTENSION DeviceExtension;
-   PMSFS_FCB Fcb;
-   PMSFS_CCB Ccb;
-   KIRQL oldIrql;
-   PLIST_ENTRY current_entry;
-   PMSFS_FCB current;
-   PMAILSLOT_CREATE_PARAMETERS Buffer;
-
-   DPRINT("MsfsCreateMailslot(DeviceObject %p Irp %p)\n", DeviceObject, Irp);
-
-   IoStack = (PEXTENDED_IO_STACK_LOCATION)IoGetCurrentIrpStackLocation(Irp);
-   DeviceExtension = DeviceObject->DeviceExtension;
-   FileObject = IoStack->FileObject;
-   Buffer = IoStack->Parameters.CreateMailslot.Parameters;
-
-   DPRINT("Mailslot name: %wZ\n", &FileObject->FileName);
-
-   Fcb = ExAllocatePool(NonPagedPool, sizeof(MSFS_FCB));
-   if (Fcb == NULL)
-     {
-       Irp->IoStatus.Status = STATUS_NO_MEMORY;
-       Irp->IoStatus.Information = 0;
-
-       IoCompleteRequest(Irp, IO_NO_INCREMENT);
-
-       return(STATUS_NO_MEMORY);
-     }
-
-   Fcb->Name.Length = FileObject->FileName.Length;
-   Fcb->Name.MaximumLength = Fcb->Name.Length + sizeof(UNICODE_NULL);
-   Fcb->Name.Buffer = ExAllocatePool(NonPagedPool, Fcb->Name.MaximumLength);
-   if (Fcb->Name.Buffer == NULL)
-     {
-       ExFreePool(Fcb);
-
-       Irp->IoStatus.Status = STATUS_NO_MEMORY;
-       Irp->IoStatus.Information = 0;
-
-       IoCompleteRequest(Irp, IO_NO_INCREMENT);
-
-       return(STATUS_NO_MEMORY);
-     }
-
-   RtlCopyUnicodeString(&Fcb->Name, &FileObject->FileName);
-
-   Ccb = ExAllocatePool(NonPagedPool, sizeof(MSFS_CCB));
-   if (Ccb == NULL)
-     {
-       ExFreePool(Fcb->Name.Buffer);
-       ExFreePool(Fcb);
-
-       Irp->IoStatus.Status = STATUS_NO_MEMORY;
-       Irp->IoStatus.Information = 0;
-
-       IoCompleteRequest(Irp, IO_NO_INCREMENT);
-
-       return(STATUS_NO_MEMORY);
-     }
-
-   Fcb->ReferenceCount = 0;
-   InitializeListHead(&Fcb->CcbListHead);
-   KeInitializeSpinLock(&Fcb->CcbListLock);
-
-   Fcb->MaxMessageSize = Buffer->MaximumMessageSize;
-   Fcb->MessageCount = 0;
-   Fcb->TimeOut = Buffer->ReadTimeout;
-   KeInitializeEvent(&Fcb->MessageEvent,
-                    NotificationEvent,
-                    FALSE);
-
-   InitializeListHead(&Fcb->MessageListHead);
-   KeInitializeSpinLock(&Fcb->MessageListLock);
-
-   KeLockMutex(&DeviceExtension->FcbListLock);
-   current_entry = DeviceExtension->FcbListHead.Flink;
-   while (current_entry != &DeviceExtension->FcbListHead)
-     {
-       current = CONTAINING_RECORD(current_entry,
-                                   MSFS_FCB,
-                                   FcbListEntry);
-
-       if (!RtlCompareUnicodeString(&Fcb->Name, &current->Name, TRUE))
-         {
-            break;
-         }
-
-       current_entry = current_entry->Flink;
-     }
-
-   if (current_entry != &DeviceExtension->FcbListHead)
-     {
-       ExFreePool(Fcb->Name.Buffer);
-       ExFreePool(Fcb);
-
-       Fcb = current;
-     }
-   else
-     {
-       InsertTailList(&DeviceExtension->FcbListHead,
-                      &Fcb->FcbListEntry);
-     }
+    PEXTENDED_IO_STACK_LOCATION IoStack;
+    PFILE_OBJECT FileObject;
+    PMSFS_DEVICE_EXTENSION DeviceExtension;
+    PMSFS_FCB Fcb;
+    PMSFS_CCB Ccb;
+    KIRQL oldIrql;
+    PLIST_ENTRY current_entry;
+    PMSFS_FCB current;
+    PMAILSLOT_CREATE_PARAMETERS Buffer;
+
+    DPRINT("MsfsCreateMailslot(DeviceObject %p Irp %p)\n", DeviceObject, Irp);
+
+    IoStack = (PEXTENDED_IO_STACK_LOCATION)IoGetCurrentIrpStackLocation(Irp);
+    DeviceExtension = DeviceObject->DeviceExtension;
+    FileObject = IoStack->FileObject;
+    Buffer = IoStack->Parameters.CreateMailslot.Parameters;
+
+    DPRINT("Mailslot name: %wZ\n", &FileObject->FileName);
+
+    Fcb = ExAllocatePool(NonPagedPool, sizeof(MSFS_FCB));
+    if (Fcb == NULL)
+    {
+        Irp->IoStatus.Status = STATUS_NO_MEMORY;
+        Irp->IoStatus.Information = 0;
+
+        IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+        return STATUS_NO_MEMORY;
+    }
+
+    Fcb->Name.Length = FileObject->FileName.Length;
+    Fcb->Name.MaximumLength = Fcb->Name.Length + sizeof(UNICODE_NULL);
+    Fcb->Name.Buffer = ExAllocatePool(NonPagedPool, Fcb->Name.MaximumLength);
+    if (Fcb->Name.Buffer == NULL)
+    {
+        ExFreePool(Fcb);
+
+        Irp->IoStatus.Status = STATUS_NO_MEMORY;
+        Irp->IoStatus.Information = 0;
+
+        IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+        return STATUS_NO_MEMORY;
+    }
+
+    RtlCopyUnicodeString(&Fcb->Name, &FileObject->FileName);
+
+    Ccb = ExAllocatePool(NonPagedPool, sizeof(MSFS_CCB));
+    if (Ccb == NULL)
+    {
+        ExFreePool(Fcb->Name.Buffer);
+        ExFreePool(Fcb);
+
+        Irp->IoStatus.Status = STATUS_NO_MEMORY;
+        Irp->IoStatus.Information = 0;
 
-   KeAcquireSpinLock(&Fcb->CcbListLock, &oldIrql);
-   InsertTailList(&Fcb->CcbListHead, &Ccb->CcbListEntry);
-   KeReleaseSpinLock(&Fcb->CcbListLock, oldIrql);
+        IoCompleteRequest(Irp, IO_NO_INCREMENT);
 
-   Fcb->ReferenceCount++;
-   Fcb->ServerCcb = Ccb;
-   Ccb->Fcb = Fcb;
+        return STATUS_NO_MEMORY;
+    }
 
-   KeUnlockMutex(&DeviceExtension->FcbListLock);
+    Fcb->ReferenceCount = 0;
+    InitializeListHead(&Fcb->CcbListHead);
+    KeInitializeSpinLock(&Fcb->CcbListLock);
 
-   FileObject->FsContext = Fcb;
-   FileObject->FsContext2 = Ccb;
-   FileObject->Flags |= FO_MAILSLOT;
+    Fcb->MaxMessageSize = Buffer->MaximumMessageSize;
+    Fcb->MessageCount = 0;
+    Fcb->TimeOut = Buffer->ReadTimeout;
+    KeInitializeEvent(&Fcb->MessageEvent,
+                      NotificationEvent,
+                      FALSE);
 
-   Irp->IoStatus.Status = STATUS_SUCCESS;
-   Irp->IoStatus.Information = 0;
+    InitializeListHead(&Fcb->MessageListHead);
+    KeInitializeSpinLock(&Fcb->MessageListLock);
 
-   IoCompleteRequest(Irp, IO_NO_INCREMENT);
+    KeLockMutex(&DeviceExtension->FcbListLock);
+    current_entry = DeviceExtension->FcbListHead.Flink;
+    while (current_entry != &DeviceExtension->FcbListHead)
+    {
+        current = CONTAINING_RECORD(current_entry,
+                                    MSFS_FCB,
+                                    FcbListEntry);
 
-   return(STATUS_SUCCESS);
+        if (!RtlCompareUnicodeString(&Fcb->Name, &current->Name, TRUE))
+            break;
+
+        current_entry = current_entry->Flink;
+    }
+
+    if (current_entry != &DeviceExtension->FcbListHead)
+    {
+        ExFreePool(Fcb->Name.Buffer);
+        ExFreePool(Fcb);
+
+        Fcb = current;
+    }
+    else
+    {
+        InsertTailList(&DeviceExtension->FcbListHead,
+                       &Fcb->FcbListEntry);
+    }
+
+    KeAcquireSpinLock(&Fcb->CcbListLock, &oldIrql);
+    InsertTailList(&Fcb->CcbListHead, &Ccb->CcbListEntry);
+    KeReleaseSpinLock(&Fcb->CcbListLock, oldIrql);
+
+    Fcb->ReferenceCount++;
+    Fcb->ServerCcb = Ccb;
+    Ccb->Fcb = Fcb;
+
+    KeUnlockMutex(&DeviceExtension->FcbListLock);
+
+    FileObject->FsContext = Fcb;
+    FileObject->FsContext2 = Ccb;
+    FileObject->Flags |= FO_MAILSLOT;
+
+    Irp->IoStatus.Status = STATUS_SUCCESS;
+    Irp->IoStatus.Information = 0;
+
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return STATUS_SUCCESS;
 }
 
 
 NTSTATUS DEFAULTAPI
 MsfsClose(PDEVICE_OBJECT DeviceObject,
-         PIRP Irp)
+          PIRP Irp)
 {
-   PIO_STACK_LOCATION IoStack;
-   PFILE_OBJECT FileObject;
-   PMSFS_DEVICE_EXTENSION DeviceExtension;
-   PMSFS_FCB Fcb;
-   PMSFS_CCB Ccb;
-   PMSFS_MESSAGE Message;
-   KIRQL oldIrql;
+    PIO_STACK_LOCATION IoStack;
+    PFILE_OBJECT FileObject;
+    PMSFS_DEVICE_EXTENSION DeviceExtension;
+    PMSFS_FCB Fcb;
+    PMSFS_CCB Ccb;
+    PMSFS_MESSAGE Message;
+    KIRQL oldIrql;
+
+    DPRINT("MsfsClose(DeviceObject %p Irp %p)\n", DeviceObject, Irp);
 
-   DPRINT("MsfsClose(DeviceObject %p Irp %p)\n", DeviceObject, Irp);
+    IoStack = IoGetCurrentIrpStackLocation(Irp);
+    DeviceExtension = DeviceObject->DeviceExtension;
+    FileObject = IoStack->FileObject;
 
-   IoStack = IoGetCurrentIrpStackLocation(Irp);
-   DeviceExtension = DeviceObject->DeviceExtension;
-   FileObject = IoStack->FileObject;
+    KeLockMutex(&DeviceExtension->FcbListLock);
 
-   KeLockMutex(&DeviceExtension->FcbListLock);
+    if (DeviceExtension->FcbListHead.Flink == &DeviceExtension->FcbListHead)
+    {
+        KeUnlockMutex(&DeviceExtension->FcbListLock);
 
-   if (DeviceExtension->FcbListHead.Flink == &DeviceExtension->FcbListHead)
-     {
-       KeUnlockMutex(&DeviceExtension->FcbListLock);
+        Irp->IoStatus.Status = STATUS_SUCCESS;
+        Irp->IoStatus.Information = 0;
 
-       Irp->IoStatus.Status = STATUS_SUCCESS;
-       Irp->IoStatus.Information = 0;
+        IoCompleteRequest(Irp, IO_NO_INCREMENT);
 
-       IoCompleteRequest(Irp, IO_NO_INCREMENT);
+        return STATUS_SUCCESS;
+    }
 
-       return(STATUS_SUCCESS);
-     }
+    Fcb = FileObject->FsContext;
+    Ccb = FileObject->FsContext2;
 
-   Fcb = FileObject->FsContext;
-   Ccb = FileObject->FsContext2;
+    DPRINT("Mailslot name: %wZ\n", &Fcb->Name);
 
-   DPRINT("Mailslot name: %wZ\n", &Fcb->Name);
+    Fcb->ReferenceCount--;
+    if (Fcb->ServerCcb == Ccb)
+    {
+        /* delete all messages from message-list */
+        KeAcquireSpinLock(&Fcb->MessageListLock, &oldIrql);
 
-   Fcb->ReferenceCount--;
-   if (Fcb->ServerCcb == Ccb)
-     {
-       /* delete all messages from message-list */
-       KeAcquireSpinLock(&Fcb->MessageListLock, &oldIrql);
+        while (Fcb->MessageListHead.Flink != &Fcb->MessageListHead)
+        {
+            Message = CONTAINING_RECORD(Fcb->MessageListHead.Flink,
+                                        MSFS_MESSAGE,
+                                        MessageListEntry);
+            RemoveEntryList(Fcb->MessageListHead.Flink);
+            ExFreePool(Message);
+        }
 
-       while (Fcb->MessageListHead.Flink != &Fcb->MessageListHead)
-         {
-            Message = CONTAINING_RECORD(Fcb->MessageListHead.Flink,
-                                        MSFS_MESSAGE,
-                                        MessageListEntry);
-            RemoveEntryList(Fcb->MessageListHead.Flink);
-            ExFreePool(Message);
-         }
-       Fcb->MessageCount = 0;
+        Fcb->MessageCount = 0;
 
-       KeReleaseSpinLock(&Fcb->MessageListLock, oldIrql);
-       Fcb->ServerCcb = NULL;
-     }
+        KeReleaseSpinLock(&Fcb->MessageListLock, oldIrql);
+        Fcb->ServerCcb = NULL;
+    }
 
-   KeAcquireSpinLock(&Fcb->CcbListLock, &oldIrql);
-   RemoveEntryList(&Ccb->CcbListEntry);
-   KeReleaseSpinLock(&Fcb->CcbListLock, oldIrql);
-   ExFreePool(Ccb);
-   FileObject->FsContext2 = NULL;
+    KeAcquireSpinLock(&Fcb->CcbListLock, &oldIrql);
+    RemoveEntryList(&Ccb->CcbListEntry);
+    KeReleaseSpinLock(&Fcb->CcbListLock, oldIrql);
+    ExFreePool(Ccb);
+    FileObject->FsContext2 = NULL;
 
-   if (Fcb->ReferenceCount == 0)
-     {
-       DPRINT1("ReferenceCount == 0: Deleting mailslot data\n");
-       RemoveEntryList(&Fcb->FcbListEntry);
-       ExFreePool(Fcb->Name.Buffer);
-       ExFreePool(Fcb);
-     }
+    if (Fcb->ReferenceCount == 0)
+    {
+        DPRINT1("ReferenceCount == 0: Deleting mailslot data\n");
+        RemoveEntryList(&Fcb->FcbListEntry);
+        ExFreePool(Fcb->Name.Buffer);
+        ExFreePool(Fcb);
+    }
 
-   KeUnlockMutex(&DeviceExtension->FcbListLock);
+    KeUnlockMutex(&DeviceExtension->FcbListLock);
 
-   Irp->IoStatus.Status = STATUS_SUCCESS;
-   Irp->IoStatus.Information = 0;
+    Irp->IoStatus.Status = STATUS_SUCCESS;
+    Irp->IoStatus.Information = 0;
 
-   IoCompleteRequest(Irp, IO_NO_INCREMENT);
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
 
-   return(STATUS_SUCCESS);
+    return STATUS_SUCCESS;
 }
 
 /* EOF */