Search
Module:
Directory

   Desktop Functions:

   Smart Device Functions:


Show Recent Changes
Subscribe (RSS)
Misc. Pages
Comments
FAQ
Helpful Tools
Playground
Suggested Reading
Website TODO List
Download Visual Studio Add-In

TRUSTEE (Structures)
 
.
Summary
Identifies the user account, group account, or logon session to which an ACE applies

C# Definition:

private enum MULTIPLE_TRUSTEE_OPERATION
[StructLayout(LayoutKind.Sequential, CharSet=CharSet.Auto, Pack=4)]
struct TRUSTEE
{
    NO_MULTIPLE_TRUSTEE,
    TRUSTEE_IS_IMPERSONATE
    IntPtr pMultipleTrustee; // must be null
    int MultipleTrusteeOperation;
    int TrusteeForm;
    int TrusteeType;
    [MarshalAs(UnmanagedType.LPTStr)]
    string ptstrName;
}

VB Definition:

    <StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Auto, Pack:=4)> _
    Public Structure TRUSTEE
    Dim pMultipleTrustee As IntPtr ' must be null
    Dim MultipleTrusteeOperation As Integer
    Dim TrusteeForm As Integer
    Dim TrusteeType As Integer
    <Some Marshalling attribute here>
    Dim ptstrName As String
    End Structure

User-Defined Field Types:

None.

private enum TRUSTEE_FORM
{
    TRUSTEE_IS_SID,
    TRUSTEE_IS_NAME,
    TRUSTEE_BAD_FORM,
    TRUSTEE_IS_OBJECTS_AND_SID,
    TRUSTEE_IS_OBJECTS_AND_NAME
}

Notes:

ptstrName is actually a LPTSTR in windows API (whereas string in .NET is unicode), so a marshalling attribute is needed to make it work.

private enum TRUSTEE_TYPE
{
    TRUSTEE_IS_UNKNOWN,
    TRUSTEE_IS_USER,
    TRUSTEE_IS_GROUP,
    TRUSTEE_IS_DOMAIN,
    TRUSTEE_IS_ALIAS,
    TRUSTEE_IS_WELL_KNOWN_GROUP,
    TRUSTEE_IS_DELETED,
    TRUSTEE_IS_INVALID,
    TRUSTEE_IS_COMPUTER
}

//Platform independent (32 & 64 bit) - use Pack = 0 for both platforms. IntPtr works as well.
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto, Pack = 0)]
private struct TRUSTEE : IDisposable
{
    public IntPtr pMultipleTrustee;
    public MULTIPLE_TRUSTEE_OPERATION MultipleTrusteeOperation;
    public TRUSTEE_FORM TrusteeForm;
    public TRUSTEE_TYPE TrusteeType;
    private IntPtr ptstrName;

    void IDisposable.Dispose()
    {
       if (ptstrName != IntPtr.Zero) Marshal.Release(ptstrName);
    }

    public string Name { get { return Marshal.PtrToStringAuto(ptstrName); } }
}

VB Definition:

    <StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Auto, Pack:=4)> _
    Public Structure TRUSTEE
    Dim pMultipleTrustee As IntPtr ' must be null
    Dim MultipleTrusteeOperation As Integer
    Dim TrusteeForm As Integer
    Dim TrusteeType As Integer
    <Some Marshalling attribute here>
    Dim ptstrName As String
    End Structure

User-Defined Field Types:

None.

Notes:

ptstrName is actually a LPTSTR in windows API (whereas string in .NET is unicode), so a marshalling attribute is needed to make it work.

Documentation

Please edit this page!

Do you have...

  • helpful tips?
  • corrections to the existing content?
  • alternate definitions?
  • additional languages you want to include?

Select "Edit This Page" on the right hand toolbar and edit it! Or add new pages containing any supporting types needed.

 
Access PInvoke.net directly from VS:
Terms of Use
Edit This Page
Find References
Show Printable Version
Revisions