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