GetLengthSid (advapi32)
Last changed: -140.178.205.8

.
Summary
Returns the length in bytes of a valid SID

C# Signature:

[DllImport("advapi32.dll")]
static extern uint GetLengthSid(IntPtr pSid);

User-Defined Types:

None.

Notes:

If pSid points to an unamanged array of bytes containing a SID, this function determines the length of the SID (by the formula: 8 + 4 times the value of the second byte), which you need to know, for example, when copying the SID into a managed byte array.

Tips & Tricks:

Please add some!

Sample Code:

public static byte[] GetSidFromString(string stringSid)
{
    IntPtr pSid;
    if ( !ConvertStringSidToSid(stringSid, out pSid) )
        Marshal.ThrowExceptionForHR(Marshal.GetHRForLastWin32Error());
    try
    {
        int length = (int) GetLengthSid(pSid);
        byte[] sid = new byte[length];
        Marshal.Copy(pSid, sid, 0, length);
        return sid;
    }
    finally
    {
        LocalFree(pSid);
    }
}

Alternative Managed API:

Do you know one? Please contribute it!

Documentation