Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add more precise NTSTATUS const fns #183

Merged
merged 9 commits into from
Sep 5, 2024

Conversation

NateD-MSFT
Copy link
Contributor

The current NT_SUCCESS macro checks for NTSTATUS >= 0. While this is semantically equivalent to the official behavior I think it is appropriate to match MSDN documentation exactly.

This PR also adds the other NT_ macros for information, warning, and error values.

Reference: https://learn.microsoft.com/en-us/windows-hardware/drivers/kernel/using-ntstatus-values

@NateD-MSFT NateD-MSFT changed the title Add more precise NTSTATUS macros. Add more precise NTSTATUS const fns. Jul 9, 2024
@ChrisDenton
Copy link

For reference, here's how they're defined in C:

#define NT_SUCCESS(Status) (((NTSTATUS)(Status)) >= 0)

#ifdef _PREFAST_
#define NT_INFORMATION(Status) (((NTSTATUS)(Status)) >= (long)0x40000000)
#else
#define NT_INFORMATION(Status) ((((ULONG)(Status)) >> 30) == 1)
#endif

#ifdef _PREFAST_
#define NT_WARNING(Status) (((NTSTATUS)(Status) < (long)0xc0000000))
#else
#define NT_WARNING(Status) ((((ULONG)(Status)) >> 30) == 2)
#endif

#ifdef _PREFAST_
#define NT_ERROR(Status) (((NTSTATUS)(Status)) >= (unsigned long)0xc0000000)
#else
#define NT_ERROR(Status) ((((ULONG)(Status)) >> 30) == 3)
#endif

crates/wdk-sys/src/lib.rs Outdated Show resolved Hide resolved
crates/wdk-sys/src/lib.rs Show resolved Hide resolved
hamzamust
hamzamust previously approved these changes Jul 17, 2024
@hamzamust hamzamust self-requested a review July 17, 2024 22:13
@wmmc88 wmmc88 self-assigned this Jul 29, 2024
@wmmc88 wmmc88 changed the title Add more precise NTSTATUS const fns. feat: add more precise NTSTATUS const fns Sep 5, 2024
@NateD-MSFT
Copy link
Contributor Author

@wmmc88 it looks like one of the docs jobs hanged. Can you restart it or bypass it?

@wmmc88
Copy link
Collaborator

wmmc88 commented Sep 5, 2024

@wmmc88 it looks like one of the docs jobs hanged. Can you restart it or bypass it?

Ah. Hanged on winget installation. Winget installation is primarily used to get the WDK. Do you think someone could port the pipelines to use the new nuget pkgs?

@wmmc88 wmmc88 added this pull request to the merge queue Sep 5, 2024
Merged via the queue into microsoft:main with commit a6623f2 Sep 5, 2024
49 checks passed
@NateD-MSFT NateD-MSFT deleted the nt-status-updates branch September 23, 2024 23:32
@wmmc88 wmmc88 mentioned this pull request Sep 27, 2024
@wmmc88 wmmc88 mentioned this pull request Oct 15, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants