getsidsubauthoritycount (advapi32)
Last changed: vfinn-194.149.77.201

.
Summary
The GetSidSubAuthorityCount function returns a pointer to the member in a security identifier (SID) structure containing the subauthority count

C# Signature:

[DllImport("advapi32.dll", SetLastError=true)]
static extern TODO GetSidSubAuthorityCount(TODO);

VB Signature:

Declare Function GetSidSubAuthorityCount Lib "advapi32.dll" (
   ByVal psid As IntPtr
) As IntPtr

User-Defined Types:

None.

Notes:

None.

Tips & Tricks:

Please add some!

Sample Code:

Dim numSubAuthorities As Byte = Runtime.InteropServices.Marshal.ReadByte(GetSidSubAuthorityCount(pSID), 0)

'
' a WinNT version of the ConvertSidToStringSid function
'
Private Shared Function ConvertSidToStringSidNT(ByVal Sid As IntPtr) As String
   Dim sb As New StringBuilder
   Dim psia As SID_IDENTIFIER_AUTHORITY
   Dim i, num, temp As Integer
   Dim top As Long
   Dim iptr As IntPtr

   If Not IsValidSid(Sid) Then
     Return ""
   End If

   sb.Append("S-1-")

   ' Get the top level authority
   iptr = GetSidIdentifierAuthority(Sid)
   psia = CType(Marshal.PtrToStructure(iptr, GetType(SID_IDENTIFIER_AUTHORITY)), SID_IDENTIFIER_AUTHORITY)

   ' How many sub authorities?
   iptr = GetSidSubAuthorityCount(Sid)
   num = Marshal.ReadInt16(iptr)

   ' Use the hex version of the top authority?
   If psia.Value(0) <> 0 And psia.Value(1) <> 0 Then
     sb.AppendFormat("0x{0:x2}" & psia.Value(0)
     sb.AppendFormat("x{0:x2}" & psia.Value(1))
     sb.AppendFormat("x{0:x2}" & psia.Value(2))
     sb.AppendFormat("x{0:x2}" & psia.Value(3))
     sb.AppendFormat("x{0:x2}" & psia.Value(4))
     sb.AppendFormat("x{0:x2}" & psia.Value(5))
   Else
     top = psia.Value(5)
     top += psia.Value(4) * 256
     top += psia.Value(3) * 256 * 256
     top += psia.Value(2) * 256 * 256 * 256
     sb.Append(top.ToString)
   End If

   For i = 0 To num - 1
     iptr = GetSidSubAuthority(Sid, i)
     temp = Marshal.ReadInt32(iptr)
     sb.Append("-" & temp.ToString)
   Next

   Return sb.ToString
End Function

Alternative Managed API:

Do you know one? Please contribute it!

Documentation