1 /* $Id: npfs.c,v 1.2 2001/10/21 18:58:31 chorns Exp $
3 * COPYRIGHT: See COPYING in the top level directory
4 * PROJECT: ReactOS kernel
5 * FILE: services/fs/np/mount.c
6 * PURPOSE: Named pipe filesystem
7 * PROGRAMMER: David Welch <welch@cwcom.net>
10 /* INCLUDES ******************************************************************/
12 #include <ddk/ntddk.h>
18 NPAGED_LOOKASIDE_LIST NpfsPipeDataLookasideList
;
20 /* FUNCTIONS *****************************************************************/
23 DriverEntry(PDRIVER_OBJECT DriverObject
,
24 PUNICODE_STRING RegistryPath
)
26 PNPFS_DEVICE_EXTENSION DeviceExtension
;
27 PDEVICE_OBJECT DeviceObject
;
28 UNICODE_STRING DeviceName
;
31 DbgPrint("Named Pipe FSD 0.0.2\n");
33 DeviceObject
->Flags
= 0;
34 DriverObject
->MajorFunction
[IRP_MJ_CREATE
] = NpfsCreate
;
35 DriverObject
->MajorFunction
[IRP_MJ_CREATE_NAMED_PIPE
] =
37 DriverObject
->MajorFunction
[IRP_MJ_CLOSE
] = NpfsClose
;
38 DriverObject
->MajorFunction
[IRP_MJ_READ
] = NpfsRead
;
39 DriverObject
->MajorFunction
[IRP_MJ_WRITE
] = NpfsWrite
;
40 DriverObject
->MajorFunction
[IRP_MJ_QUERY_INFORMATION
] =
42 DriverObject
->MajorFunction
[IRP_MJ_SET_INFORMATION
] =
44 DriverObject
->MajorFunction
[IRP_MJ_QUERY_VOLUME_INFORMATION
] =
45 NpfsQueryVolumeInformation
;
46 // DriverObject->MajorFunction[IRP_MJ_CLEANUP] = NpfsCleanup;
47 // DriverObject->MajorFunction[IRP_MJ_FLUSH_BUFFERS] = NpfsFlushBuffers;
48 // DriverObject->MajorFunction[IRP_MJ_DIRECTORY_CONTROL] =
49 // NpfsDirectoryControl;
50 DriverObject
->MajorFunction
[IRP_MJ_FILE_SYSTEM_CONTROL
] =
51 NpfsFileSystemControl
;
52 // DriverObject->MajorFunction[IRP_MJ_QUERY_SECURITY] =
54 // DriverObject->MajorFunction[IRP_MJ_SET_SECURITY] =
57 DriverObject
->DriverUnload
= NULL
;
59 RtlInitUnicodeString(&DeviceName
, L
"\\Device\\NamedPipe");
60 Status
= IoCreateDevice(DriverObject
,
61 sizeof(NPFS_DEVICE_EXTENSION
),
63 FILE_DEVICE_NAMED_PIPE
,
67 if (!NT_SUCCESS(Status
))
69 DPRINT("Failed to create named pipe device! (Status %x)\n", Status
);
73 /* initialize the device extension */
74 DeviceExtension
= DeviceObject
->DeviceExtension
;
75 InitializeListHead(&DeviceExtension
->PipeListHead
);
76 KeInitializeMutex(&DeviceExtension
->PipeListLock
,
79 ExInitializeNPagedLookasideList(
80 &NpfsPipeDataLookasideList
,
84 sizeof(NPFS_PIPE_DATA
),
85 TAG('N', 'P', 'D', 'A'),
88 return(STATUS_SUCCESS
);