2 * PROJECT: ReactOS Named Pipe FileSystem
3 * LICENSE: BSD - See COPYING.ARM in the top level directory
4 * FILE: drivers/filesystems/npfs/close.c
5 * PURPOSE: Pipes Closing
6 * PROGRAMMERS: ReactOS Portable Systems Group
9 /* INCLUDES *******************************************************************/
13 // File ID number for NPFS bugchecking support
14 #define NPFS_BUGCHECK_FILE_ID (NPFS_BUGCHECK_CLOSE)
16 /* FUNCTIONS ******************************************************************/
20 NpCommonClose(IN PDEVICE_OBJECT DeviceObject
,
23 PIO_STACK_LOCATION IoStack
;
24 NODE_TYPE_CODE NodeTypeCode
;
25 LIST_ENTRY DeferredList
;
31 IoStack
= IoGetCurrentIrpStackLocation(Irp
);
32 InitializeListHead(&DeferredList
);
34 NpAcquireExclusiveVcb();
35 NodeTypeCode
= NpDecodeFileObject(IoStack
->FileObject
,
39 if (NodeTypeCode
== NPFS_NTC_ROOT_DCB
)
41 --Fcb
->CurrentInstances
;
42 NpDeleteCcb(Ccb
, &DeferredList
);
44 else if (NodeTypeCode
== NPFS_NTC_VCB
)
46 --NpVcb
->ReferenceCount
;
50 NpCompleteDeferredIrps(&DeferredList
);
52 Irp
->IoStatus
.Status
= STATUS_SUCCESS
;
53 IoCompleteRequest(Irp
, IO_NAMED_PIPE_INCREMENT
);
54 return STATUS_SUCCESS
;
59 NpFsdClose(IN PDEVICE_OBJECT DeviceObject
,
65 FsRtlEnterFileSystem();
67 Status
= NpCommonClose(DeviceObject
, Irp
);
69 FsRtlExitFileSystem();