xref: /reactos/drivers/filesystems/cdfs/nodetype.h (revision 34593d93)
1 /*++
2 
3 Copyright (c) 1989-2000 Microsoft Corporation
4 
5 Module Name:
6 
7     NodeType.h
8 
9 Abstract:
10 
11     This module defines all of the node type codes used in this development
12     shell.  Every major data structure in the file system is assigned a node
13     type code that is.  This code is the first CSHORT in the structure and is
14     followed by a CSHORT containing the size, in bytes, of the structure.
15 
16 
17 --*/
18 
19 #ifndef _CDNODETYPE_
20 #define _CDNODETYPE_
21 
22 typedef USHORT NODE_TYPE_CODE;
23 typedef NODE_TYPE_CODE *PNODE_TYPE_CODE;
24 
25 #define NTC_UNDEFINED                   ((NODE_TYPE_CODE)0x0000)
26 
27 #define CDFS_NTC_DATA_HEADER            ((NODE_TYPE_CODE)0x0301)
28 #define CDFS_NTC_VCB                    ((NODE_TYPE_CODE)0x0302)
29 #define CDFS_NTC_FCB_PATH_TABLE         ((NODE_TYPE_CODE)0x0303)
30 #define CDFS_NTC_FCB_INDEX              ((NODE_TYPE_CODE)0x0304)
31 #define CDFS_NTC_FCB_DATA               ((NODE_TYPE_CODE)0x0305)
32 #define CDFS_NTC_FCB_NONPAGED           ((NODE_TYPE_CODE)0x0306)
33 #define CDFS_NTC_CCB                    ((NODE_TYPE_CODE)0x0307)
34 #define CDFS_NTC_IRP_CONTEXT            ((NODE_TYPE_CODE)0x0308)
35 #define CDFS_NTC_IRP_CONTEXT_LITE       ((NODE_TYPE_CODE)0x0309)
36 
37 typedef CSHORT NODE_BYTE_SIZE;
38 
39 //
40 //  So all records start with
41 //
42 //  typedef struct _RECORD_NAME {
43 //      NODE_TYPE_CODE NodeTypeCode;
44 //      NODE_BYTE_SIZE NodeByteSize;
45 //          :
46 //  } RECORD_NAME;
47 //  typedef RECORD_NAME *PRECORD_NAME;
48 //
49 
50 #ifndef NodeType
51 #define NodeType(P) ((P) != NULL ? (*((PNODE_TYPE_CODE)(P))) : NTC_UNDEFINED)
52 #endif
53 #ifndef SafeNodeType
54 #define SafeNodeType(Ptr) (*((PNODE_TYPE_CODE)(Ptr)))
55 #endif
56 
57 //
58 //  The following definitions are used to generate meaningful blue bugcheck
59 //  screens.  On a bugcheck the file system can output 4 ulongs of useful
60 //  information.  The first ulong will have encoded in it a source file id
61 //  (in the high word) and the line number of the bugcheck (in the low word).
62 //  The other values can be whatever the caller of the bugcheck routine deems
63 //  necessary.
64 //
65 //  Each individual file that calls bugcheck needs to have defined at the
66 //  start of the file a constant called BugCheckFileId with one of the
67 //  CDFS_BUG_CHECK_ values defined below and then use CdBugCheck to bugcheck
68 //  the system.
69 //
70 
71 #define CDFS_BUG_CHECK_ACCHKSUP          (0x00010000)
72 #define CDFS_BUG_CHECK_ALLOCSUP          (0x00020000)
73 #define CDFS_BUG_CHECK_CACHESUP          (0x00030000)
74 #define CDFS_BUG_CHECK_CDDATA            (0x00040000)
75 #define CDFS_BUG_CHECK_CDINIT            (0x00050000)
76 #define CDFS_BUG_CHECK_CLEANUP           (0x00060000)
77 #define CDFS_BUG_CHECK_CLOSE             (0x00070000)
78 #define CDFS_BUG_CHECK_CREATE            (0x00080000)
79 #define CDFS_BUG_CHECK_DEVCTRL           (0x00090000)
80 #define CDFS_BUG_CHECK_DEVIOSUP          (0x000a0000)
81 #define CDFS_BUG_CHECK_DIRCTRL           (0x000b0000)
82 #define CDFS_BUG_CHECK_DIRSUP            (0x000c0000)
83 #define CDFS_BUG_CHECK_FILEINFO          (0x000d0000)
84 #define CDFS_BUG_CHECK_FILOBSUP          (0x000e0000)
85 #define CDFS_BUG_CHECK_FSCTRL            (0x000f0000)
86 #define CDFS_BUG_CHECK_FSPDISP           (0x00100000)
87 #define CDFS_BUG_CHECK_LOCKCTRL          (0x00110000)
88 #define CDFS_BUG_CHECK_NAMESUP           (0x00120000)
89 #define CDFS_BUG_CHECK_PATHSUP           (0x00130000)
90 #define CDFS_BUG_CHECK_PNP               (0x00140000)
91 #define CDFS_BUG_CHECK_PREFXSUP          (0x00150000)
92 #define CDFS_BUG_CHECK_READ              (0x00160000)
93 #define CDFS_BUG_CHECK_WRITE             (0x00170000)
94 #define CDFS_BUG_CHECK_RESRCSUP          (0x00180000)
95 #define CDFS_BUG_CHECK_STRUCSUP          (0x00190000)
96 #define CDFS_BUG_CHECK_TIMESUP           (0x001a0000)
97 #define CDFS_BUG_CHECK_VERFYSUP          (0x001b0000)
98 #define CDFS_BUG_CHECK_VOLINFO           (0x001c0000)
99 #define CDFS_BUG_CHECK_WORKQUE           (0x001d0000)
100 #define CDFS_BUG_CHECK_SHUTDOWN          (0x001e0000)
101 
102 
103 #define CdBugCheck(A,B,C) { KeBugCheckEx(CDFS_FILE_SYSTEM, BugCheckFileId | __LINE__, A, B, C ); }
104 
105 #endif // _NODETYPE_
106 
107