ReactOS
0.4.15-dev-1618-g9c8ed68
fileobsup.c
Go to the documentation of this file.
1
/*
2
* PROJECT: ReactOS Named Pipe FileSystem
3
* LICENSE: BSD - See COPYING.ARM in the top level directory
4
* FILE: drivers/filesystems/npfs/fileobsup.c
5
* PURPOSE: Pipes File Object Support
6
* PROGRAMMERS: ReactOS Portable Systems Group
7
*/
8
9
/* INCLUDES *******************************************************************/
10
11
#include "
npfs.h
"
12
13
// File ID number for NPFS bugchecking support
14
#define NPFS_BUGCHECK_FILE_ID (NPFS_BUGCHECK_FILEOBSUP)
15
16
/* FUNCTIONS ******************************************************************/
17
18
NODE_TYPE_CODE
19
NTAPI
20
NpDecodeFileObject
(
IN
PFILE_OBJECT
FileObject
,
21
OUT
PVOID
* PrimaryContext
OPTIONAL
,
22
OUT
PNP_CCB
*
Ccb
,
23
OUT
PULONG
NamedPipeEnd
OPTIONAL
)
24
{
25
ULONG_PTR
Context
;
26
PNP_CCB
Node
;
27
PAGED_CODE
();
28
29
Context
= (
ULONG_PTR
)
FileObject
->FsContext;
30
if
((
Context
) && (
Context
!= 1))
31
{
32
if
(NamedPipeEnd) *NamedPipeEnd =
Context
& 1;
33
34
Node
= (
PVOID
)(
Context
& ~1);
35
36
switch
(
Node
->NodeType)
37
{
38
case
NPFS_NTC_VCB
:
39
return
NPFS_NTC_VCB
;
40
41
case
NPFS_NTC_ROOT_DCB
:
42
*
Ccb
=
FileObject
->FsContext2;
43
if
(PrimaryContext) *PrimaryContext =
Node
;
44
return
NPFS_NTC_ROOT_DCB
;
45
46
case
NPFS_NTC_CCB
:
47
*
Ccb
=
Node
;
48
if
(PrimaryContext) *PrimaryContext =
Node
->Fcb;
49
return
NPFS_NTC_CCB
;
50
51
default
:
52
NpBugCheck
(
Node
->NodeType, 0, 0);
53
break
;
54
}
55
}
56
57
return
0;
58
}
59
60
VOID
61
NTAPI
62
NpSetFileObject
(
IN
PFILE_OBJECT
FileObject
,
63
IN
PVOID
PrimaryContext,
64
IN
PVOID
Ccb
,
65
IN
ULONG
NamedPipeEnd)
66
{
67
BOOLEAN
FileIsPipe;
68
PAGED_CODE
();
69
70
if
(!
FileObject
)
return
;
71
72
if
((PrimaryContext) && (((
PNP_CCB
)PrimaryContext)->
NodeType
==
NPFS_NTC_CCB
))
73
{
74
FileIsPipe =
TRUE
;
75
if
(NamedPipeEnd ==
FILE_PIPE_SERVER_END
)
76
{
77
PrimaryContext = (
PVOID
) ((
ULONG_PTR
) PrimaryContext | 1);
78
}
79
}
80
else
81
{
82
FileIsPipe =
FALSE
;
83
}
84
85
FileObject
->FsContext = PrimaryContext;
86
FileObject
->FsContext2 =
Ccb
;
87
FileObject
->PrivateCacheMap = (
PVOID
)1;
88
if
(FileIsPipe)
FileObject
->
Flags
|=
FO_NAMED_PIPE
;
89
}
90
91
/* EOF */
Context
Definition:
compobj.c:4794
IN
#define IN
Definition:
typedefs.h:39
TRUE
#define TRUE
Definition:
types.h:120
NPFS_NTC_CCB
#define NPFS_NTC_CCB
Definition:
npfs.h:115
ULONG_PTR
uint32_t ULONG_PTR
Definition:
typedefs.h:65
_NP_CCB
Definition:
npfs.h:258
NTAPI
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
Definition:
IoEaTest.cpp:117
FALSE
#define FALSE
Definition:
types.h:117
Node
union node Node
Definition:
types.h:1255
FO_NAMED_PIPE
#define FO_NAMED_PIPE
Definition:
iotypes.h:1779
BOOLEAN
unsigned char BOOLEAN
Definition:
ProcessorBind.h:185
PVOID
void * PVOID
Definition:
retypes.h:9
NodeType
NodeType
Definition:
Node.h:5
FileObject
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
Definition:
wdfdevice.h:547
NpBugCheck
#define NpBugCheck(p1, p2, p3)
Definition:
npfs.h:106
if
if(!(yy_init))
Definition:
macro.lex.yy.c:714
PFILE_OBJECT
* PFILE_OBJECT
Definition:
iotypes.h:1995
FILE_PIPE_SERVER_END
#define FILE_PIPE_SERVER_END
Definition:
iotypes.h:85
_FCB::Flags
ULONG Flags
Definition:
ntfs.h:532
Ccb
_Inout_ PFILE_OBJECT _In_ TYPE_OF_OPEN PFCB _In_opt_ PCCB Ccb
Definition:
cdprocs.h:588
NPFS_NTC_ROOT_DCB
#define NPFS_NTC_ROOT_DCB
Definition:
npfs.h:113
NpSetFileObject
VOID NTAPI NpSetFileObject(IN PFILE_OBJECT FileObject, IN PVOID PrimaryContext, IN PVOID Ccb, IN ULONG NamedPipeEnd)
Definition:
fileobsup.c:62
npfs.h
PULONG
unsigned int * PULONG
Definition:
retypes.h:1
Context
struct tagContext Context
Definition:
acpixf.h:1034
OUT
#define OUT
Definition:
typedefs.h:40
ULONG
unsigned int ULONG
Definition:
retypes.h:1
NpDecodeFileObject
NODE_TYPE_CODE NTAPI NpDecodeFileObject(IN PFILE_OBJECT FileObject, OUT PVOID *PrimaryContext OPTIONAL, OUT PNP_CCB *Ccb, OUT PULONG NamedPipeEnd OPTIONAL)
Definition:
fileobsup.c:20
ULONG_PTR
#define ULONG_PTR
Definition:
config.h:101
NODE_TYPE_CODE
USHORT NODE_TYPE_CODE
Definition:
nodetype.h:22
void
Definition:
nsiface.idl:2306
NPFS_NTC_VCB
#define NPFS_NTC_VCB
Definition:
npfs.h:112
node
Definition:
dlist.c:348
PAGED_CODE
#define PAGED_CODE()
Definition:
Bus_PDO_QueryResourceRequirements.c:89
OPTIONAL
PULONG MinorVersion OPTIONAL
Definition:
CrossNt.h:68
drivers
filesystems
npfs
fileobsup.c
Generated on Fri Jan 15 2021 06:05:53 for ReactOS by
1.8.15