20inline constexpr X_HANDLE kXInvalidHandleValue =
static_cast<X_HANDLE
>(-1);
30 return (s & 0x80000000) == 0;
40inline constexpr X_STATUS X_STATUS_SUCCESS = 0x00000000;
41inline constexpr X_STATUS X_STATUS_ABANDONED_WAIT_0 = 0x00000080;
42inline constexpr X_STATUS X_STATUS_USER_APC = 0x000000C0;
43inline constexpr X_STATUS X_STATUS_ALERTED = 0x00000101;
44inline constexpr X_STATUS X_STATUS_TIMEOUT = 0x00000102;
45inline constexpr X_STATUS X_STATUS_PENDING = 0x00000103;
46inline constexpr X_STATUS X_STATUS_OBJECT_NAME_EXISTS = 0x40000000;
47inline constexpr X_STATUS X_STATUS_TIMER_RESUME_IGNORED = 0x40000025;
48inline constexpr X_STATUS X_STATUS_BUFFER_OVERFLOW = 0x80000005;
49inline constexpr X_STATUS X_STATUS_NO_MORE_FILES = 0x80000006;
50inline constexpr X_STATUS X_STATUS_UNSUCCESSFUL = 0xC0000001;
51inline constexpr X_STATUS X_STATUS_NOT_IMPLEMENTED = 0xC0000002;
52inline constexpr X_STATUS X_STATUS_INVALID_INFO_CLASS = 0xC0000003;
53inline constexpr X_STATUS X_STATUS_INFO_LENGTH_MISMATCH = 0xC0000004;
54inline constexpr X_STATUS X_STATUS_ACCESS_VIOLATION = 0xC0000005;
55inline constexpr X_STATUS X_STATUS_INVALID_HANDLE = 0xC0000008;
56inline constexpr X_STATUS X_STATUS_INVALID_PARAMETER = 0xC000000D;
57inline constexpr X_STATUS X_STATUS_NO_SUCH_FILE = 0xC000000F;
58inline constexpr X_STATUS X_STATUS_END_OF_FILE = 0xC0000011;
59inline constexpr X_STATUS X_STATUS_NO_MEMORY = 0xC0000017;
60inline constexpr X_STATUS X_STATUS_ALREADY_COMMITTED = 0xC0000021;
61inline constexpr X_STATUS X_STATUS_ACCESS_DENIED = 0xC0000022;
62inline constexpr X_STATUS X_STATUS_BUFFER_TOO_SMALL = 0xC0000023;
63inline constexpr X_STATUS X_STATUS_OBJECT_TYPE_MISMATCH = 0xC0000024;
64inline constexpr X_STATUS X_STATUS_OBJECT_NAME_INVALID = 0xC0000033;
65inline constexpr X_STATUS X_STATUS_OBJECT_NAME_NOT_FOUND = 0xC0000034;
66inline constexpr X_STATUS X_STATUS_OBJECT_NAME_COLLISION = 0xC0000035;
67inline constexpr X_STATUS X_STATUS_OBJECT_PATH_NOT_FOUND = 0xC000003A;
68inline constexpr X_STATUS X_STATUS_SHARING_VIOLATION = 0xC0000043;
69inline constexpr X_STATUS X_STATUS_INVALID_PAGE_PROTECTION = 0xC0000045;
70inline constexpr X_STATUS X_STATUS_MUTANT_NOT_OWNED = 0xC0000046;
71inline constexpr X_STATUS X_STATUS_THREAD_IS_TERMINATING = 0xC000004B;
72inline constexpr X_STATUS X_STATUS_PROCESS_IS_TERMINATING = 0xC000010A;
73inline constexpr X_STATUS X_STATUS_PROCEDURE_NOT_FOUND = 0xC000007A;
74inline constexpr X_STATUS X_STATUS_INSUFFICIENT_RESOURCES = 0xC000009A;
75inline constexpr X_STATUS X_STATUS_NOT_SAME_DEVICE = 0xC00000D4;
76inline constexpr X_STATUS X_STATUS_MEMORY_NOT_ALLOCATED = 0xC00000A0;
77inline constexpr X_STATUS X_STATUS_FILE_IS_A_DIRECTORY = 0xC00000BA;
78inline constexpr X_STATUS X_STATUS_NOT_SUPPORTED = 0xC00000BB;
79inline constexpr X_STATUS X_STATUS_NOT_A_DIRECTORY = 0xC0000103;
80inline constexpr X_STATUS X_STATUS_INVALID_PARAMETER_1 = 0xC00000EF;
81inline constexpr X_STATUS X_STATUS_INVALID_PARAMETER_2 = 0xC00000F0;
82inline constexpr X_STATUS X_STATUS_INVALID_PARAMETER_3 = 0xC00000F1;
83inline constexpr X_STATUS X_STATUS_DLL_NOT_FOUND = 0xC0000135;
84inline constexpr X_STATUS X_STATUS_ENTRYPOINT_NOT_FOUND = 0xC0000139;
85inline constexpr X_STATUS X_STATUS_SEMAPHORE_LIMIT_EXCEEDED = 0xC000012B;
86inline constexpr X_STATUS X_STATUS_MAPPED_ALIGNMENT = 0xC0000220;
87inline constexpr X_STATUS X_STATUS_NOT_FOUND = 0xC0000225;
88inline constexpr X_STATUS X_STATUS_DRIVER_ORDINAL_NOT_FOUND = 0xC0000262;
89inline constexpr X_STATUS X_STATUS_DRIVER_ENTRYPOINT_NOT_FOUND = 0xC0000263;
93inline constexpr i32 kFacilityWin32 = 0x0007;
122using X_HRESULT = u32;
129 return static_cast<i32
>(x) <= 0 ? x : ((x & 0xFFFF) | (kFacilityWin32 << 16) | 0x80000000);
132inline constexpr X_HRESULT X_E_FALSE = 0x80000000;
134inline constexpr X_HRESULT X_E_FAIL = 0x80004005;
135inline constexpr X_HRESULT kXEUnexpected = 0x8000FFFF;
136inline constexpr X_HRESULT kXEOutOfMemory = 0x8007000E;
137inline constexpr X_HRESULT X_E_NO_MORE_FILES =
XHRESULTFromWin32(X_ERROR_NO_MORE_FILES);
138inline constexpr X_HRESULT X_E_INVALIDARG =
XHRESULTFromWin32(X_ERROR_INVALID_PARAMETER);
139inline constexpr X_HRESULT X_E_DEVICE_NOT_CONNECTED =
142inline constexpr X_HRESULT X_E_NO_SUCH_USER =
XHRESULTFromWin32(X_ERROR_NO_SUCH_USER);
172 X_STATUS unsupported = X_STATUS_NOT_IMPLEMENTED);
182 X_RESULT unsupported = X_ERROR_FUNCTION_FAILED);
191 return result ? X_STATUS_SUCCESS :
ToXStatus(result.error());
201 return result ? X_ERROR_SUCCESS :
ToXResult(result.error());
rex::Error StatusError(X_STATUS status)
rex::Error XResultError(X_RESULT result)
u32 X_STATUS
Definition status.h:23
constexpr X_HRESULT XHRESULTFromWin32(u32 x)
Definition status.h:128
X_RESULT ToXResult(const rex::Error &error, X_RESULT unsupported=X_ERROR_FUNCTION_FAILED)
constexpr bool XFAILED(X_STATUS s)
Definition status.h:37
X_STATUS ToXStatus(const rex::Error &error, X_STATUS unsupported=X_STATUS_NOT_IMPLEMENTED)
u32 X_RESULT
Definition status.h:92
constexpr X_RESULT XResultFromWin32(u32 x)
Definition status.h:95
constexpr bool XSUCCEEDED(X_STATUS s)
Definition status.h:29
std::expected< T, Error > Result
Definition result.h:98
u32 RtlNtStatusToDosError(u32 source_status)
Integer types, byte order wrappers and size literals.