1 /* 2 * The internal definitions 3 * 4 * Copyright (C) 2011-2021, Joachim Metz <joachim.metz@gmail.com> 5 * 6 * Refer to AUTHORS for acknowledgements. 7 * 8 * This program is free software: you can redistribute it and/or modify 9 * it under the terms of the GNU Lesser General Public License as published by 10 * the Free Software Foundation, either version 3 of the License, or 11 * (at your option) any later version. 12 * 13 * This program is distributed in the hope that it will be useful, 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 * GNU General Public License for more details. 17 * 18 * You should have received a copy of the GNU Lesser General Public License 19 * along with this program. If not, see <https://www.gnu.org/licenses/>. 20 */ 21 22 #if !defined( _LIBEVTX_INTERNAL_DEFINITIONS_H ) 23 #define _LIBEVTX_INTERNAL_DEFINITIONS_H 24 25 #include <common.h> 26 #include <byte_stream.h> 27 28 #define LIBEVTX_ENDIAN_BIG _BYTE_STREAM_ENDIAN_BIG 29 #define LIBEVTX_ENDIAN_LITTLE _BYTE_STREAM_ENDIAN_LITTLE 30 31 /* Define HAVE_LOCAL_LIBEVTX for local use of libevtx 32 */ 33 #if !defined( HAVE_LOCAL_LIBEVTX ) 34 #include <libevtx/definitions.h> 35 36 /* The definitions in <libevtx/definitions.h> are copied here 37 * for local use of libevtx 38 */ 39 #else 40 #define LIBEVTX_VERSION 20210525 41 42 /* The version string 43 */ 44 #define LIBEVTX_VERSION_STRING "20210525" 45 46 /* The access flags definitions 47 * bit 1 set to 1 for read access 48 * bit 2 set to 1 for write access 49 * bit 3-8 not used 50 */ 51 enum LIBEVTX_ACCESS_FLAGS 52 { 53 LIBEVTX_ACCESS_FLAG_READ = 0x01, 54 /* Reserved: not supported yet */ 55 LIBEVTX_ACCESS_FLAG_WRITE = 0x02 56 }; 57 58 /* The file access macros 59 */ 60 #define LIBEVTX_OPEN_READ ( LIBEVTX_ACCESS_FLAG_READ ) 61 /* Reserved: not supported yet */ 62 #define LIBEVTX_OPEN_WRITE ( LIBEVTX_ACCESS_FLAG_WRITE ) 63 /* Reserved: not supported yet */ 64 #define LIBEVTX_OPEN_READ_WRITE ( LIBEVTX_ACCESS_FLAG_READ | LIBEVTX_ACCESS_FLAG_WRITE ) 65 66 /* The event level definitions 67 */ 68 enum LIBEVTX_EVENT_LEVELS 69 { 70 LIBEVTX_EVENT_LEVEL_CRITICAL = 1, 71 LIBEVTX_EVENT_LEVEL_ERROR = 2, 72 LIBEVTX_EVENT_LEVEL_WARNING = 3, 73 LIBEVTX_EVENT_LEVEL_INFORMATION = 4, 74 LIBEVTX_EVENT_LEVEL_VERBOSE = 5, 75 }; 76 77 /* The event file flags 78 */ 79 enum LIBEVTX_FILE_FLAGS 80 { 81 LIBEVTX_FILE_FLAG_IS_DIRTY = 0x00000001UL, 82 LIBEVTX_FILE_FLAG_IS_FULL = 0x00000002UL, 83 }; 84 85 #endif /* !defined( HAVE_LOCAL_LIBEVTX ) */ 86 87 /* The IO handle flags 88 */ 89 enum LIBEVTX_IO_HANDLE_FLAGS 90 { 91 /* The file is corrupted 92 */ 93 LIBEVTX_IO_HANDLE_FLAG_IS_CORRUPTED = 0x01 94 }; 95 96 /* The chunk flags 97 */ 98 enum LIBEVTX_CHUNK_FLAGS 99 { 100 /* The chunk is corrupted 101 */ 102 LIBEVTX_CHUNK_FLAG_IS_CORRUPTED = 0x01 103 }; 104 105 /* The binary XML token definitions 106 */ 107 enum LIBEVTX_BINARY_XML_TOKENS 108 { 109 LIBEVTX_BINARY_XML_TOKEN_END_OF_FILE = 0x00, 110 LIBEVTX_BINARY_XML_TOKEN_OPEN_START_ELEMENT_TAG = 0x01, 111 LIBEVTX_BINARY_XML_TOKEN_CLOSE_START_ELEMENT_TAG = 0x02, 112 LIBEVTX_BINARY_XML_TOKEN_CLOSE_EMPTY_ELEMENT_TAG = 0x03, 113 LIBEVTX_BINARY_XML_TOKEN_END_ELEMENT_TAG = 0x04, 114 LIBEVTX_BINARY_XML_TOKEN_VALUE = 0x05, 115 LIBEVTX_BINARY_XML_TOKEN_ATTRIBUTE = 0x06, 116 LIBEVTX_BINARY_XML_TOKEN_CDATA_SECTION = 0x07, 117 LIBEVTX_BINARY_XML_TOKEN_CHARACTER_REFERENCE = 0x08, 118 LIBEVTX_BINARY_XML_TOKEN_ENTITY_REFERENCE = 0x09, 119 LIBEVTX_BINARY_XML_TOKEN_PI_TARGET = 0x0a, 120 LIBEVTX_BINARY_XML_TOKEN_PI_DATA = 0x0b, 121 LIBEVTX_BINARY_XML_TOKEN_TEMPLATE_INSTANCE = 0x0c, 122 LIBEVTX_BINARY_XML_TOKEN_NORMAL_SUBSTITUTION = 0x0d, 123 LIBEVTX_BINARY_XML_TOKEN_OPTIONAL_SUBSTITUTION = 0x0e, 124 LIBEVTX_BINARY_XML_TOKEN_FRAGMENT_HEADER = 0x0f 125 }; 126 127 #define LIBEVTX_BINARY_XML_TOKEN_FLAG_HAS_MORE_DATA 0x40 128 129 /* The value type definitions 130 */ 131 enum LIBEVTX_VALUE_TYPES 132 { 133 LIBEVTX_VALUE_TYPE_NULL = 0x00, 134 LIBEVTX_VALUE_TYPE_STRING_UTF16 = 0x01, 135 LIBEVTX_VALUE_TYPE_STRING_BYTE_STREAM = 0x02, 136 LIBEVTX_VALUE_TYPE_INTEGER_8BIT = 0x03, 137 LIBEVTX_VALUE_TYPE_UNSIGNED_INTEGER_8BIT = 0x04, 138 LIBEVTX_VALUE_TYPE_INTEGER_16BIT = 0x05, 139 LIBEVTX_VALUE_TYPE_UNSIGNED_INTEGER_16BIT = 0x06, 140 LIBEVTX_VALUE_TYPE_INTEGER_32BIT = 0x07, 141 LIBEVTX_VALUE_TYPE_UNSIGNED_INTEGER_32BIT = 0x08, 142 LIBEVTX_VALUE_TYPE_INTEGER_64BIT = 0x09, 143 LIBEVTX_VALUE_TYPE_UNSIGNED_INTEGER_64BIT = 0x0a, 144 LIBEVTX_VALUE_TYPE_FLOATING_POINT_32BIT = 0x0b, 145 LIBEVTX_VALUE_TYPE_FLOATING_POINT_64BIT = 0x0c, 146 LIBEVTX_VALUE_TYPE_BOOLEAN = 0x0d, 147 LIBEVTX_VALUE_TYPE_BINARY_DATA = 0x0e, 148 LIBEVTX_VALUE_TYPE_GUID = 0x0f, 149 LIBEVTX_VALUE_TYPE_SIZE = 0x10, 150 LIBEVTX_VALUE_TYPE_FILETIME = 0x11, 151 LIBEVTX_VALUE_TYPE_SYSTEMTIME = 0x12, 152 LIBEVTX_VALUE_TYPE_NT_SECURITY_IDENTIFIER = 0x13, 153 LIBEVTX_VALUE_TYPE_HEXADECIMAL_INTEGER_32BIT = 0x14, 154 LIBEVTX_VALUE_TYPE_HEXADECIMAL_INTEGER_64BIT = 0x15, 155 156 LIBEVTX_VALUE_TYPE_BINARY_XML = 0x21, 157 158 LIBEVTX_VALUE_TYPE_ARRAY_OF_STRING_UTF16 = 0x81, 159 LIBEVTX_VALUE_TYPE_ARRAY_OF_STRING_BYTE_STREAM = 0x82, 160 LIBEVTX_VALUE_TYPE_ARRAY_OF_INTEGER_8BIT = 0x83, 161 LIBEVTX_VALUE_TYPE_ARRAY_OF_UNSIGNED_INTEGER_8BIT = 0x84, 162 LIBEVTX_VALUE_TYPE_ARRAY_OF_INTEGER_16BIT = 0x85, 163 LIBEVTX_VALUE_TYPE_ARRAY_OF_UNSIGNED_INTEGER_16BIT = 0x86, 164 LIBEVTX_VALUE_TYPE_ARRAY_OF_INTEGER_32BIT = 0x87, 165 LIBEVTX_VALUE_TYPE_ARRAY_OF_UNSIGNED_INTEGER_32BIT = 0x88, 166 LIBEVTX_VALUE_TYPE_ARRAY_OF_INTEGER_64BIT = 0x89, 167 LIBEVTX_VALUE_TYPE_ARRAY_OF_UNSIGNED_INTEGER_64BIT = 0x8a, 168 LIBEVTX_VALUE_TYPE_ARRAY_OF_FLOATING_POINT_32BIT = 0x8b, 169 LIBEVTX_VALUE_TYPE_ARRAY_OF_FLOATING_POINT_64BIT = 0x8c, 170 171 LIBEVTX_VALUE_TYPE_ARRAY_OF_GUID = 0x8f, 172 LIBEVTX_VALUE_TYPE_ARRAY_OF_SIZE = 0x90, 173 LIBEVTX_VALUE_TYPE_ARRAY_OF_FILETIME = 0x91, 174 LIBEVTX_VALUE_TYPE_ARRAY_OF_SYSTEMTIME = 0x92, 175 LIBEVTX_VALUE_TYPE_ARRAY_OF_NT_SECURITY_IDENTIFIER = 0x93, 176 LIBEVTX_VALUE_TYPE_ARRAY_OF_HEXADECIMAL_INTEGER_32BIT = 0x94, 177 LIBEVTX_VALUE_TYPE_ARRAY_OF_HEXADECIMAL_INTEGER_64BIT = 0x95, 178 }; 179 180 #define LIBEVTX_VALUE_TYPE_ARRAY 0x80 181 182 /* The record flags 183 */ 184 enum LIBEVTX_RECORD_FLAGS 185 { 186 LIBEVTX_RECORD_FLAG_NON_MANAGED_FILE_IO_HANDLE = 0x00, 187 LIBEVTX_RECORD_FLAG_MANAGED_FILE_IO_HANDLE = 0x01, 188 }; 189 190 #define LIBEVTX_RECORD_FLAGS_DEFAULT LIBEVTX_RECORD_FLAG_NON_MANAGED_FILE_IO_HANDLE 191 192 /* The XML tag type definitions 193 */ 194 enum LIBEVTX_XML_TAG_TYPES 195 { 196 LIBEVTX_XML_TAG_TYPE_NODE, 197 LIBEVTX_XML_TAG_TYPE_CDATA, 198 LIBEVTX_XML_TAG_TYPE_PI 199 }; 200 201 /* The maximum number of cache entries defintions 202 */ 203 #define LIBEVTX_MAXIMUM_CACHE_ENTRIES_CHUNKS 16 204 #define LIBEVTX_MAXIMUM_CACHE_ENTRIES_RECORDS 64 205 206 #endif 207 208