microsoft / microsoft/CsWin32

The P/Invoke `NetGetAadJoinInformation()` doesn't generate a SafeHandle overload.

Open
#1,615 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

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

Description

Happy new year, Jevan! This might be a win32metadata thing, I'm not too sure.

Actual behavior

The documentation for NetGetAadJoinInformation() states:

You must call the NetFreeAadJoinInformation function to free the memory allocated for this structure.

The current friendly overload is generated is:

internal static unsafe winmdroot.Foundation.HRESULT NetGetAadJoinInformation([Optional] string pcszTenantId, out winmdroot.NetworkManagement.NetManagement.DSREG_JOIN_INFO* ppJoinInfo)
{
    fixed (winmdroot.NetworkManagement.NetManagement.DSREG_JOIN_INFO** ppJoinInfoLocal = &ppJoinInfo)
    {
        fixed (char* pcszTenantIdLocal = pcszTenantId)
        {
            winmdroot.Foundation.HRESULT __result = PInvoke.NetGetAadJoinInformation(pcszTenantIdLocal, ppJoinInfoLocal);
            return __result;
        }
    }
}

Expected behavior

With the above in mind, I'd expect to see a NetFreeAadJoinInformationSafeHandle type being generated.

Repro steps

  1. NativeMethods.txt content:
NetGetAadJoinInformation
  1. NativeMethods.json content (if present): N/A

  2. Any of your own code that should be shared? N/A

Context
  • CsWin32 version: 0.3.264
  • Win32Metadata version (if explicitly set by project): N/A
  • Target Framework: net472
  • LangVersion (if explicitly set by project): N/A

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 generated NetGetAadJoinInformation overload and reproduce the issue using a NativeMethods.txt containing that API. Trace how CsWin32 determines ownership and generates friendly overloads, then verify that a NetFreeAadJoinInformationSafeHandle is generated and corresponds to the documented cleanup requirement.

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
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.