+++ /dev/null
-/*
- * PROJECT: ReactOS Named Pipe FileSystem
- * LICENSE: BSD - See COPYING.ARM in the top level directory
- * FILE: drivers/filesystems/npfs/fileobsup.c
- * PURPOSE: Pipes File Object Support
- * PROGRAMMERS: ReactOS Portable Systems Group
- */
-
-/* INCLUDES *******************************************************************/
-
-#include "npfs.h"
-
-// File ID number for NPFS bugchecking support
-#define NPFS_BUGCHECK_FILE_ID (NPFS_BUGCHECK_FILEOBSUP)
-
-/* FUNCTIONS ******************************************************************/
-
-NODE_TYPE_CODE
-NTAPI
-NpDecodeFileObject(IN PFILE_OBJECT FileObject,
- OUT PVOID* PrimaryContext OPTIONAL,
- OUT PNP_CCB* Ccb,
- OUT PULONG NamedPipeEnd OPTIONAL)
-{
- ULONG_PTR Context;
- PNP_CCB Node;
- PAGED_CODE();
-
- Context = (ULONG_PTR)FileObject->FsContext;
- if ((Context) && (Context != 1))
- {
- if (NamedPipeEnd) *NamedPipeEnd = Context & 1;
-
- Node = (PVOID)(Context & ~1);
-
- switch (Node->NodeType)
- {
- case NPFS_NTC_VCB:
- return NPFS_NTC_VCB;
-
- case NPFS_NTC_ROOT_DCB:
- *Ccb = FileObject->FsContext2;
- if (PrimaryContext) *PrimaryContext = Node;
- return NPFS_NTC_ROOT_DCB;
-
- case NPFS_NTC_CCB:
- *Ccb = Node;
- if (PrimaryContext) *PrimaryContext = Node->Fcb;
- return NPFS_NTC_CCB;
-
- default:
- NpBugCheck(Node->NodeType, 0, 0);
- break;
- }
- }
-
- return 0;
-}
-
-VOID
-NTAPI
-NpSetFileObject(IN PFILE_OBJECT FileObject,
- IN PVOID PrimaryContext,
- IN PVOID Ccb,
- IN ULONG NamedPipeEnd)
-{
- BOOLEAN FileIsPipe;
- PAGED_CODE();
-
- if (!FileObject) return;
-
- if ((PrimaryContext) && (((PNP_CCB)PrimaryContext)->NodeType == NPFS_NTC_CCB))
- {
- FileIsPipe = TRUE;
- if (NamedPipeEnd == FILE_PIPE_SERVER_END)
- {
- PrimaryContext = (PVOID) ((ULONG_PTR) PrimaryContext | 1);
- }
- }
- else
- {
- FileIsPipe = FALSE;
- }
-
- FileObject->FsContext = PrimaryContext;
- FileObject->FsContext2 = Ccb;
- FileObject->PrivateCacheMap = (PVOID)1;
- if (FileIsPipe) FileObject->Flags |= FO_NAMED_PIPE;
-}
-
-/* EOF */