xref: /reactos/sdk/include/ddk/nodetype.h (revision c2c66aff)
1 #ifndef _NODETYPE_INCLUDED_
2 #define _NODETYPE_INCLUDED_
3 
4 
5 typedef USHORT NODE_TYPE_CODE;
6 typedef NODE_TYPE_CODE *PNODE_TYPE_CODE;
7 typedef CSHORT NODE_BYTE_SIZE;
8 
9 #ifndef NodeType
10 #define NodeType(Ptr) (*((PNODE_TYPE_CODE)(Ptr)))
11 #endif
12 
13 typedef struct _NODE_TYPE_CODE_AND_SIZE_NO_REFCOUNT
14 {
15     NODE_TYPE_CODE NodeTypeCode;
16     NODE_BYTE_SIZE NodeByteSize;
17 }  NODE_TYPE_CODE_AND_SIZE_NO_REFCOUNT;
18 
19 typedef struct _NODE_TYPE_CODE_AND_SIZE
20 {
21     NODE_TYPE_CODE_AND_SIZE_NO_REFCOUNT;
22     volatile ULONG NodeReferenceCount;
23 } NODE_TYPE_CODE_AND_SIZE, *PNODE_TYPE_AND_SIZE;
24 
25 #define ZeroAndInitializeNodeType(Node, Type, Size) \
26 { \
27         RtlZeroMemory(Node, Size); \
28         ((NODE_TYPE_CODE_AND_SIZE *)(Node))->NodeTypeCode = Type; \
29         ((NODE_TYPE_CODE_AND_SIZE *)(Node))->NodeByteSize = (CSHORT)Size; \
30 }
31 
32 #define RDBSS_STORAGE_NTC(x) (0xec00 + (x))
33 
34 typedef enum _RX_FILE_TYPE
35 {
36     FileTypeNotYetKnown = 0,
37     FileTypeDirectory = 2,
38     FileTypeFile = 3
39 } RX_FILE_TYPE;
40 
41 #define RDBSS_NTC_STORAGE_TYPE_UNKNOWN ((NODE_TYPE_CODE)0xec00)
42 #define RDBSS_NTC_STORAGE_TYPE_DIRECTORY ((NODE_TYPE_CODE)0xec02)
43 #define RDBSS_NTC_STORAGE_TYPE_FILE ((NODE_TYPE_CODE)0xec03)
44 #define RDBSS_NTC_OPENTARGETDIR_FCB ((NODE_TYPE_CODE)0xecff)
45 #define RDBSS_NTC_IPC_SHARE ((NODE_TYPE_CODE)0xecfe)
46 #define RDBSS_NTC_MAILSLOT ((NODE_TYPE_CODE)0xecfd)
47 #define RDBSS_NTC_SPOOLFILE ((NODE_TYPE_CODE)0xecfc)
48 #define RDBSS_NTC_SRVCALL ((NODE_TYPE_CODE)0xeb10)
49 #define RDBSS_NTC_NETROOT ((NODE_TYPE_CODE)0xeb11)
50 #define RDBSS_NTC_V_NETROOT ((NODE_TYPE_CODE)0xeb12)
51 #define RDBSS_NTC_VOLUME_FCB ((NODE_TYPE_CODE)0xeb1f)
52 #define RDBSS_NTC_SRVOPEN ((NODE_TYPE_CODE)0xeb1c)
53 #define RDBSS_NTC_INTERNAL_SRVOPEN ((NODE_TYPE_CODE)0xeb1d)
54 #define RDBSS_NTC_DEVICE_FCB ((NODE_TYPE_CODE)0xeb9a)
55 #define RDBSS_NTC_DATA_HEADER ((NODE_TYPE_CODE)0xeb00)
56 #define RDBSS_NTC_VCB ((NODE_TYPE_CODE)0xeb01)
57 #define RDBSS_NTC_FOBX ((NODE_TYPE_CODE)0xeb07)
58 #define RDBSS_NTC_RX_CONTEXT ((NODE_TYPE_CODE)0xeb08)
59 #define RDBSS_NTC_PREFIX_TABLE ((NODE_TYPE_CODE)0xeb0d)
60 #define RDBSS_NTC_PREFIX_ENTRY ((NODE_TYPE_CODE)0xeb0e)
61 #define RDBSS_NTC_FCB_TABLE ((NODE_TYPE_CODE)0xeb09)
62 #define RDBSS_NTC_FCB_TABLE_ENTRY ((NODE_TYPE_CODE)0xeb0a)
63 #define RDBSS_NTC_NONPAGED_FCB ((NODE_TYPE_CODE)0xebfd)
64 #define RDBSS_NTC_MINIRDR_DISPATCH ((NODE_TYPE_CODE)0xebff)
65 
66 #define RDBSS_NTC_FCB RDBSS_NTC_STORAGE_TYPE_FILE
67 
68 #define NodeTypeIsFcb(FCB) ((((NodeType(FCB) & 0xff00) == RDBSS_NTC_STORAGE_TYPE_UNKNOWN)) || ((NodeType(FCB) & 0xfff0) == 0xeb90))
69 
70 #define RX_SCAVENGER_MASK (0x1000)
71 
72 typedef enum _RDBSS_BUG_CHECK_CODES
73 {
74      RDBSS_BUG_CHECK_FCBSTRUC = 0xfcb00000,
75      RDBSS_BUG_CHECK_CACHESUP = 0xca550000,
76      RDBSS_BUG_CHECK_CLEANUP = 0xc1ee0000,
77      RDBSS_BUG_CHECK_CLOSE = 0xc10e0000,
78      RDBSS_BUG_CHECK_NTEXCEPT = 0xbaad0000,
79 #ifdef __REACTOS__
80      RDBSS_BUG_CHECK_ASSERT = 0xa55a0000,
81 #endif
82 } RDBSS_BUG_CHECK_CODES;
83 
84 #define RDBSS_FILE_SYSTEM RDR_FILE_SYSTEM
85 
86 #define RxBugCheck(A, B, C) KeBugCheckEx(RDBSS_FILE_SYSTEM, BugCheckFileId | ((ULONG)(__LINE__)), A, B, C)
87 
88 #endif
89