LsaFreeMemory (advapi32)
Last changed: jdp@open-collar.org.uk-198.240.128.75

.
Summary
The LsaFreeMemory function frees memory allocated for an output buffer by an LSA function call.

C# Signature:

[System.Runtime.InteropServices.DllImport("advapi32.dll", SetLastError=true)]
private static extern uint LsaFreeMemory(System.IntPtr pBuffer);

VB Signature:

    Private Declare Function LsaFreeMemory Lib "advapi32.dll" ( _
    ByVal Buffer As IntPtr _
    ) As Integer

User-Defined Types:

None.

Alternative Managed API:

Do you know one? Please contribute it!

Notes:

    'NTSTATUS LsaFreeMemory(
    '  PVOID Buffer
    ');

Tips & Tricks:

Please add some!

Sample Code:

// You should already have the HPolicy and SID ready
IntPtr rightsPtr;
uint countOfRights;
LsaEnumerateAccountRights(HPolicy, SID, out rightsPtr, out countOfRights);
try
{
    IntPtr ptr = rightsPtr;
    LSA_UNICODE_STRING userRight;
    for (int i = 0; i < countOfRights; i++)
    {
       userRight = (LSA_UNICODE_STRING)Marshal.PtrToStructure(ptr, typeof(LSA_UNICODE_STRING));
       String userRightStr = Marshal.PtrToStringAuto(userRight.Buffer);
       Console.WriteLine("Another Privilege found: " + userRightStr);
       ptr = (IntPtr)((Int32)ptr + Marshal.SizeOf(userRight));
    }
}
finally
{
    LsaFreeMemory(rightsPtr);
}

Documentation