53 for(
size_t i = 0; i < bucket->numDefinitions; i++)
55 if(bucket->definitions[i].status == status)
56 return &bucket->definitions[i];
68 for(
size_t i = 0; i < bucket->numDefinitions; i++)
70 if(bucket->definitions[i].errno_equivalent == errno_equivalent)
71 return &bucket->definitions[i];
88 swprintf_s(buf, max_chars, L
"Unknown error (%lld, 0x%llX)", (
long long)status, (
unsigned long long)status);
120 {
INFO::OK, L
"No error reported here" },
121 {
ERR::FAIL, L
"Function failed (no details available)" },
144 {
ERR::LIMIT, L
"Fixed limit exceeded", E2BIG },
StatusDefinitionBucket * next
static StatusDefinitionBucket * buckets
int swprintf_s(wchar_t *buf, size_t max_chars, const wchar_t *fmt,...) WPRINTF_ARGS(3)
const Status CANNOT_HANDLE
const Status INVALID_HANDLE
const Status ALL_COMPLETE
int wcscpy_s(wchar_t *dst, size_t max_dst_chars, const wchar_t *src)
const Status NOT_SUPPORTED
const Status INVALID_OFFSET
int ErrnoFromStatus(Status status)
const Status INVALID_VERSION
static const StatusDefinition * DefinitionFromStatus(Status status)
const wchar_t * description
const Status INVALID_POINTER
const Status INVALID_PARAM
i64 Status
Error handling system.
const Status INVALID_SIZE
const Status INVALID_ALIGNMENT
#define STATUS_ADD_DEFINITIONS(definitions)
add a module's array of StatusDefinition to the list.
static const StatusDefinition statusDefs[]
wchar_t * StatusDescription(Status status, wchar_t *buf, size_t max_chars)
generate textual description of a Status.
const Status INVALID_FLAG
static const StatusDefinition * DefinitionFromErrno(int errno_equivalent)
StatusDefinitionBucket * StatusAddDefinitions(StatusDefinitionBucket *bucket)
(called via STATUS_ADD_DEFINITIONS)