ReactOS 0.4.15-dev-7968-g24a56f8
ff_error.h
Go to the documentation of this file.
1/*****************************************************************************
2 * FullFAT - High Performance, Thread-Safe Embedded FAT File-System *
3 * Copyright (C) 2009 James Walmsley (james@worm.me.uk) *
4 * *
5 * This program is free software: you can redistribute it and/or modify *
6 * it under the terms of the GNU General Public License as published by *
7 * the Free Software Foundation, either version 3 of the License, or *
8 * (at your option) any later version. *
9 * *
10 * This program is distributed in the hope that it will be useful, *
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
13 * GNU General Public License for more details. *
14 * *
15 * You should have received a copy of the GNU General Public License *
16 * along with this program. If not, see <http://www.gnu.org/licenses/>. *
17 * *
18 * IMPORTANT NOTICE: *
19 * ================= *
20 * Alternative Licensing is available directly from the Copyright holder, *
21 * (James Walmsley). For more information consult LICENSING.TXT to obtain *
22 * a Commercial license. *
23 * *
24 * See RESTRICTIONS.TXT for extra restrictions on the use of FullFAT. *
25 * *
26 * Removing the above notice is illegal and will invalidate this license. *
27 *****************************************************************************
28 * See http://worm.me.uk/fullfat for more information. *
29 * Or http://fullfat.googlecode.com/ for latest releases and the wiki. *
30 *****************************************************************************/
31#ifndef _FF_ERROR_H_
32#define _FF_ERROR_H_
33
40#include "ff_config.h"
41#include "ff_types.h"
42
51#define FF_GETERROR(x) (x & 0x0000FFFF)
52
53#define FF_MODULE_SHIFT 24
54#define FF_FUNCTION_SHIFT 16
55
56//----- FullFAT Module Identifiers
57#define FF_MODULE_IOMAN (1 << FF_MODULE_SHIFT)
58#define FF_MODULE_DIR (2 << FF_MODULE_SHIFT)
59#define FF_MODULE_FILE (3 << FF_MODULE_SHIFT)
60#define FF_MODULE_FAT (4 << FF_MODULE_SHIFT)
61#define FF_MODULE_CRC (5 << FF_MODULE_SHIFT)
62#define FF_MODULE_FORMAT (6 << FF_MODULE_SHIFT)
63#define FF_MODULE_HASH (7 << FF_MODULE_SHIFT)
64#define FF_MODULE_MEMORY (8 << FF_MODULE_SHIFT)
65#define FF_MODULE_STRING (9 << FF_MODULE_SHIFT)
66#define FF_MODULE_UNICODE (10 << FF_MODULE_SHIFT)
67#define FF_MODULE_SAFETY (11 << FF_MODULE_SHIFT)
68#define FF_MODULE_TIME (12 << FF_MODULE_SHIFT)
69#define FF_MODULE_DRIVER (13 << FF_MODULE_SHIFT) // We can mark underlying platform error codes with this.
70
71//----- FullFAT Function Identifiers (In Modular Order)
72//----- FF_IOMAN - The FullFAT I/O Manager.
73#define FF_CREATEIOMAN (1 << FF_FUNCTION_SHIFT) | FF_MODULE_IOMAN
74#define FF_DESTROYIOMAN (2 << FF_FUNCTION_SHIFT) | FF_MODULE_IOMAN
75#define FF_REGISTERBLKDEVICE (3 << FF_FUNCTION_SHIFT) | FF_MODULE_IOMAN
76#define FF_UNREGISTERBLKDEVICE (4 << FF_FUNCTION_SHIFT) | FF_MODULE_IOMAN
77#define FF_MOUNTPARTITION (5 << FF_FUNCTION_SHIFT) | FF_MODULE_IOMAN
78#define FF_UNMOUNTPARTITION (6 << FF_FUNCTION_SHIFT) | FF_MODULE_IOMAN
79#define FF_FLUSHCACHE (7 << FF_FUNCTION_SHIFT) | FF_MODULE_IOMAN
80#define FF_GETPARTITIONBLOCKSIZE (8 << FF_FUNCTION_SHIFT) | FF_MODULE_IOMAN
81#define FF_BLOCKREAD (9 << FF_FUNCTION_SHIFT) | FF_MODULE_IOMAN
82#define FF_BLOCKWRITE (10 << FF_FUNCTION_SHIFT) | FF_MODULE_IOMAN
83
84//----- FF_DIR - The FullFAT directory handling routines.
85// -- COMPLETE THESE ERROR CODES TOMORROW :P
86
87
88/* FullFAT defines different Error-Code spaces for each module. This ensures
89 that all error codes remain unique, and their meaning can be quickly identified.
90*/
91// Global Error Codes
92#define FF_ERR_NONE 0
93//#define FF_ERR_GENERIC 1 ///< BAD NEVER USE THIS!
94#define FF_ERR_NULL_POINTER 2
95#define FF_ERR_NOT_ENOUGH_MEMORY 3
96#define FF_ERR_DEVICE_DRIVER_FAILED 4
97
98
99// IOMAN Error Codes
100#define FF_ERR_IOMAN_BAD_BLKSIZE 11
101#define FF_ERR_IOMAN_BAD_MEMSIZE 12
102#define FF_ERR_IOMAN_DEV_ALREADY_REGD 13
103#define FF_ERR_IOMAN_NO_MOUNTABLE_PARTITION 14
104#define FF_ERR_IOMAN_INVALID_FORMAT 15
105#define FF_ERR_IOMAN_INVALID_PARTITION_NUM 16
106#define FF_ERR_IOMAN_NOT_FAT_FORMATTED 17
107#define FF_ERR_IOMAN_DEV_INVALID_BLKSIZE 18
108#define FF_ERR_IOMAN_PARTITION_MOUNTED 19
109#define FF_ERR_IOMAN_ACTIVE_HANDLES 20
110#define FF_ERR_IOMAN_GPT_HEADER_CORRUPT 21
111#define FF_ERR_IOMAN_NOT_ENOUGH_FREE_SPACE 22
112#define FF_ERR_IOMAN_OUT_OF_BOUNDS_READ 23
113#define FF_ERR_IOMAN_OUT_OF_BOUNDS_WRITE 24
114
115
116// File Error Codes 30 +
117#define FF_ERR_FILE_ALREADY_OPEN 30
118#define FF_ERR_FILE_NOT_FOUND 31
119#define FF_ERR_FILE_OBJECT_IS_A_DIR 32
120#define FF_ERR_FILE_IS_READ_ONLY 33
121#define FF_ERR_FILE_INVALID_PATH 34
122#define FF_ERR_FILE_NOT_OPENED_IN_WRITE_MODE 35
123#define FF_ERR_FILE_NOT_OPENED_IN_READ_MODE 36
124#define FF_ERR_FILE_EXTEND_FAILED 37
125#define FF_ERR_FILE_DESTINATION_EXISTS 38
126#define FF_ERR_FILE_SOURCE_NOT_FOUND 39
127#define FF_ERR_FILE_DIR_NOT_FOUND 40
128#define FF_ERR_FILE_COULD_NOT_CREATE_DIRENT 41
129
130// Directory Error Codes 50 +
131#define FF_ERR_DIR_OBJECT_EXISTS 50
132#define FF_ERR_DIR_DIRECTORY_FULL 51
133#define FF_ERR_DIR_END_OF_DIR 52
134#define FF_ERR_DIR_NOT_EMPTY 53
135#define FF_ERR_DIR_INVALID_PATH 54
136#define FF_ERR_DIR_CANT_EXTEND_ROOT_DIR 55
137#define FF_ERR_DIR_EXTEND_FAILED 56
138#define FF_ERR_DIR_NAME_TOO_LONG 57
139
140// Fat Error Codes 70 +
141#define FF_ERR_FAT_NO_FREE_CLUSTERS 70
142
143// UNICODE Error Codes 100 +
144#define FF_ERR_UNICODE_INVALID_CODE 100
145#define FF_ERR_UNICODE_DEST_TOO_SMALL 101
146#define FF_ERR_UNICODE_INVALID_SEQUENCE 102
147#define FF_ERR_UNICODE_CONVERSION_EXCEEDED 103
148
149#ifdef FF_DEBUG
151#else
152#define FF_GetErrMessage(X) "" // A special MACRO incase FF_GetErrMessage() isn't gated with FF_DEBUG
153#endif // Function call is safely replaced with a NULL string.
154
155#endif
156
const FF_T_INT8 * FF_GetErrMessage(FF_ERROR iErrorCode)
FF_T_SINT32 FF_ERROR
A special error code type to ease some inconsistencies in Error reporting.
Definition: ff_types.h:77
char FF_T_INT8
8 bit default integer.
Definition: ff_types.h:50