microsoft / microsoft/CsWin32

Incorrect return type of RtlNtStatusToDosError

Open
#1,642 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug
Dominant language
C#
Stars
2.5k
Forks
124
Avg merge
1d 3h
Merged PRs (30d)
9

Description

Actual behavior

The signature of RtlNtStatusToDosError is generated as follows:

internal static extern uint RtlNtStatusToDosError(winmdroot.Foundation.NTSTATUS Status);

Expected behavior

The function should return WIN32_ERROR instead of uint:

internal static extern WIN32_ERROR RtlNtStatusToDosError(winmdroot.Foundation.NTSTATUS Status);

Repro steps

NativeMethods.txt content:

RtlNtStatusToDosError
WIN32_ERROR
NTSTATUS
Context
  • CsWin32 version: 0.3.269
  • Target Framework: net10.0-windows;net48
  • LangVersion: 14

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the supplied NativeMethods.txt reproduction and inspect the generated declaration for RtlNtStatusToDosError. Trace how WIN32_ERROR and NTSTATUS are resolved, then verify that the generated return type is WIN32_ERROR while the parameter remains NTSTATUS.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp
Domain
tooling
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Clearly specified
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.