1 /* $Id: fsctrl.c,v 1.4 2001/06/12 12:35:04 ekohl Exp $
3 * COPYRIGHT: See COPYING in the top level directory
4 * PROJECT: ReactOS kernel
5 * FILE: services/fs/np/fsctrl.c
6 * PURPOSE: Named pipe filesystem
7 * PROGRAMMER: David Welch <welch@cwcom.net>
8 * Eric Kohl <ekohl@rz-online.de>
11 /* INCLUDES ******************************************************************/
13 #include <ddk/ntddk.h>
20 /* FUNCTIONS *****************************************************************/
23 NpfsConnectPipe(PNPFS_FCB Fcb
)
27 DPRINT("Waiting for connection...\n");
29 Status
= KeWaitForSingleObject(&Fcb
->ConnectEvent
,
35 DPRINT("Finished waiting! Status: %x\n", Status
);
37 DPRINT("Client Fcb: %p\n", Fcb
->OtherSide
);
40 return STATUS_SUCCESS
;
45 NpfsDisconnectPipe(PNPFS_FCB Fcb
)
48 return STATUS_SUCCESS
;
53 NpfsWaitPipe(PNPFS_FCB Fcb
)
56 return STATUS_SUCCESS
;
61 NpfsFileSystemControl(PDEVICE_OBJECT DeviceObject
,
64 PIO_STACK_LOCATION IoStack
;
65 PFILE_OBJECT FileObject
;
67 PNPFS_DEVICE_EXTENSION DeviceExt
;
71 DPRINT("NpfsFileSystemContol(DeviceObject %p Irp %p)\n", DeviceObject
, Irp
);
73 DeviceExt
= (PNPFS_DEVICE_EXTENSION
)DeviceObject
->DeviceExtension
;
74 IoStack
= IoGetCurrentIrpStackLocation(Irp
);
75 FileObject
= IoStack
->FileObject
;
76 DPRINT("FileObject: %p\n", FileObject
);
77 Fcb
= FileObject
->FsContext
;
80 switch (IoStack
->Parameters
.FileSystemControl
.IoControlCode
)
82 case FSCTL_PIPE_LISTEN
:
83 DPRINT("Connecting pipe %wZ\n", &Pipe
->PipeName
);
84 Status
= NpfsConnectPipe(Fcb
);
87 case FSCTL_PIPE_DISCONNECT
:
88 DPRINT("Disconnecting pipe %wZ\n", &Pipe
->PipeName
);
89 Status
= NpfsDisconnectPipe(Fcb
);
93 DPRINT("Waiting for pipe %wZ\n", &Pipe
->PipeName
);
94 Status
= NpfsWaitPipe(Fcb
);
98 DPRINT("IoControlCode: %x\n", IoStack
->Parameters
.FileSystemControl
.IoControlCode
)
99 Status
= STATUS_UNSUCCESSFUL
;
102 Irp
->IoStatus
.Status
= Status
;
103 Irp
->IoStatus
.Information
= 0;
105 IoCompleteRequest(Irp
, IO_NO_INCREMENT
);