[NPFS]
[reactos.git] / reactos / drivers / filesystems / npfs / npfs.h
index 373980c..cb37cb0 100644 (file)
@@ -4,7 +4,22 @@
 #include <ntifs.h>
 #include <ndk/iotypes.h>
 
-typedef struct _NPFS_DEVICE_EXTENSION
+typedef enum _FCB_TYPE
+{
+    FCB_DEVICE,
+    FCB_DIRECTORY,
+    FCB_PIPE
+} FCB_TYPE;
+
+typedef enum _CCB_TYPE
+{
+    CCB_DEVICE,
+    CCB_DIRECTORY,
+    CCB_PIPE
+} CCB_TYPE;
+
+/* Volume Control Block (VCB) aka Device Extension */
+typedef struct _NPFS_VCB
 {
     LIST_ENTRY PipeListHead;
     LIST_ENTRY ThreadListHead;
@@ -13,11 +28,13 @@ typedef struct _NPFS_DEVICE_EXTENSION
     ULONG MinQuota;
     ULONG DefaultQuota;
     ULONG MaxQuota;
-} NPFS_DEVICE_EXTENSION, *PNPFS_DEVICE_EXTENSION;
+    struct _NPFS_FCB *RootFcb;
+} NPFS_VCB, *PNPFS_VCB;
 
 typedef struct _NPFS_FCB
 {
-    FSRTL_COMMON_FCB_HEADER RFCB;
+    FCB_TYPE Type;
+    PNPFS_VCB Vcb;
     UNICODE_STRING PipeName;
     LIST_ENTRY PipeListEntry;
     KMUTEX CcbListLock;
@@ -40,9 +57,11 @@ typedef struct _NPFS_FCB
 typedef struct _NPFS_CCB
 {
     LIST_ENTRY CcbListEntry;
+    CCB_TYPE Type;
+    PNPFS_FCB Fcb;
+
     struct _NPFS_CCB* OtherSide;
     struct ETHREAD *Thread;
-    PNPFS_FCB Fcb;
     KEVENT ConnectEvent;
     KEVENT ReadEvent;
     KEVENT WriteEvent;
@@ -71,7 +90,7 @@ typedef struct _NPFS_THREAD_CONTEXT
 {
     ULONG Count;
     KEVENT Event;
-    PNPFS_DEVICE_EXTENSION DeviceExt;
+    PNPFS_VCB Vcb;
     LIST_ENTRY ListEntry;
     PVOID WaitObjectArray[MAXIMUM_WAIT_OBJECTS];
     KWAIT_BLOCK WaitBlockArray[MAXIMUM_WAIT_OBJECTS];
@@ -135,4 +154,9 @@ NTSTATUS NTAPI
 DriverEntry(PDRIVER_OBJECT DriverObject,
             PUNICODE_STRING RegistryPath);
 
+PNPFS_FCB
+NpfsFindPipe(PNPFS_VCB Vcb,
+             PUNICODE_STRING PipeName);
+
+
 #endif /* __DRIVERS_FS_NP_NPFS_H */