|
11 | 11 | */ |
12 | 12 | #if defined(_M_AMD64) |
13 | 13 | #define NT_GetTEBMember(m) ((RTL_FIELD_SIZE(TEB, m) == sizeof(DWORD64) ? __readgsqword(FIELD_OFFSET(TEB, m)) : (RTL_FIELD_SIZE(TEB, m) == sizeof(DWORD) ? __readgsdword(FIELD_OFFSET(TEB, m)) : (RTL_FIELD_SIZE(TEB, m) == sizeof(WORD) ? __readgsword(FIELD_OFFSET(TEB, m)) : __readgsbyte(FIELD_OFFSET(TEB, m)))))) |
| 14 | +#define NT_GetTEBMemberQWORD(m) __readgsqword(FIELD_OFFSET(TEB, m)) |
| 15 | +#define NT_GetTEBMemberDWORD(m) __readgsdword(FIELD_OFFSET(TEB, m)) |
| 16 | +#define NT_GetTEBMemberWORD(m) __readgsword(FIELD_OFFSET(TEB, m)) |
| 17 | +#define NT_GetTEBMemberBYTE(m) __readgsbyte(FIELD_OFFSET(TEB, m)) |
14 | 18 | #elif defined(_M_IX86) |
15 | 19 | #define NT_GetTEBMember(m) ((RTL_FIELD_SIZE(TEB, m) == sizeof(DWORD) ? __readfsdword(FIELD_OFFSET(TEB, m)) : (RTL_FIELD_SIZE(TEB, m) == sizeof(WORD) ? __readfsword(FIELD_OFFSET(TEB, m)) : __readfsbyte(FIELD_OFFSET(TEB, m))))) |
| 20 | +#define NT_GetTEBMemberDWORD(m) __readfsdword(FIELD_OFFSET(TEB, m)) |
| 21 | +#define NT_GetTEBMemberWORD(m) __readfsword(FIELD_OFFSET(TEB, m)) |
| 22 | +#define NT_GetTEBMemberBYTE(m) __readfsbyte(FIELD_OFFSET(TEB, m)) |
16 | 23 | #endif |
17 | 24 |
|
18 | 25 | /** |
|
55 | 62 | #define NT_GetKUSD() ((CONST PKUSER_SHARED_DATA)MM_SHARED_USER_DATA_VA) |
56 | 63 |
|
57 | 64 | // Last Win32 Error value |
58 | | -#define NT_ClearLastError() NT_SetTEBMember(LastErrorValue, ERROR_SUCCESS) |
59 | | -#define NT_GetLastError() NT_GetTEBMember(LastErrorValue) |
| 65 | +#define NT_ClearLastError() NT_SetTEBMemberDWORD(LastErrorValue, ERROR_SUCCESS) |
| 66 | +#define NT_GetLastError() NT_GetTEBMemberDWORD(LastErrorValue) |
60 | 67 | #define NT_SetLastError(dwError) NT_SetTEBMemberDWORD(LastErrorValue, dwError) |
61 | | -#define NT_LastErrorSucceed() (NT_GetTEBMember(LastErrorValue) == ERROR_SUCCESS) |
| 68 | +#define NT_LastErrorSucceed() (NT_GetTEBMemberDWORD(LastErrorValue) == ERROR_SUCCESS) |
62 | 69 |
|
63 | 70 | // Last NT Status value |
64 | | -#define NT_ClearLastStatus() NT_SetTEBMember(LastStatusValue, STATUS_SUCCESS) |
65 | | -#define NT_GetLastStatus() NT_GetTEBMember(LastStatusValue) |
| 71 | +#define NT_ClearLastStatus() NT_SetTEBMemberDWORD(LastStatusValue, STATUS_SUCCESS) |
| 72 | +#define NT_GetLastStatus() NT_GetTEBMemberDWORD(LastStatusValue) |
66 | 73 | #define NT_SetLastStatus(lStatus) NT_SetTEBMemberDWORD(LastStatusValue, lStatus) |
67 | | -#define NT_LastStatusSucceed() (NT_GetTEBMember(LastStatusValue) == ERROR_SUCCESS) |
| 74 | +#define NT_LastStatusSucceed() (NT_GetTEBMemberDWORD(LastStatusValue) == STATUS_SUCCESS) |
| 75 | + |
| 76 | +NTA_API DWORD NTAPI NT_SetLastNTError(NTSTATUS Status); |
68 | 77 |
|
69 | 78 | /** |
70 | 79 | * @brief Initializes OBJECT_ATTRIBUTES structure |
|
0 commit comments