[NPFS]
[reactos.git] / reactos / drivers / filesystems / npfs / npfs.c
index 58b0ffc..f794964 100644 (file)
@@ -1,7 +1,7 @@
 /*
 * COPYRIGHT:  See COPYING in the top level directory
 * PROJECT:    ReactOS kernel
-* FILE:       drivers/fs/np/mount.c
+* FILE:       drivers/filesystems/npfs/npfs.c
 * PURPOSE:    Named pipe filesystem
 * PROGRAMMER: David Welch <welch@cwcom.net>
 */
@@ -25,6 +25,8 @@ DriverEntry(PDRIVER_OBJECT DriverObject,
     PNPFS_FCB Fcb;
     NTSTATUS Status;
 
+    UNREFERENCED_PARAMETER(RegistryPath);
+
     DPRINT("Named Pipe FSD 0.0.2\n");
 
     ASSERT (sizeof(NPFS_CONTEXT) <= FIELD_OFFSET(IRP, Tail.Overlay.DriverContext));
@@ -87,14 +89,29 @@ DriverEntry(PDRIVER_OBJECT DriverObject,
 
     /* Create the device FCB */
     Fcb = ExAllocatePoolWithTag(NonPagedPool, sizeof(NPFS_FCB), TAG_NPFS_FCB);
+    if (!Fcb)
+    {
+        DPRINT1("Out of memory for device FCB!\n");
+        IoDeleteDevice(DeviceObject);
+        return STATUS_INSUFFICIENT_RESOURCES;
+    }
     Fcb->Type = FCB_DEVICE;
     Fcb->Vcb = Vcb;
+    Fcb->RefCount = 1;
     Vcb->DeviceFcb = Fcb;
 
     /* Create the root directory FCB */
     Fcb = ExAllocatePoolWithTag(NonPagedPool, sizeof(NPFS_FCB), TAG_NPFS_FCB);
+    if (!Fcb)
+    {
+        DPRINT1("Out of memory for root FCB!\n");
+        IoDeleteDevice(DeviceObject);
+        ExFreePoolWithTag(Vcb->DeviceFcb, TAG_NPFS_FCB);
+        return STATUS_INSUFFICIENT_RESOURCES;
+    }
     Fcb->Type = FCB_DIRECTORY;
     Fcb->Vcb = Vcb;
+    Fcb->RefCount = 1;
     Vcb->RootFcb = Fcb;
 
     return STATUS_SUCCESS;