getuserobjectinformation (user32)
Last changed: -66.103.226.30

.
Summary

C# Signature:

[DllImport("user32.dll", SetLastError=true)]
static extern bool GetUserObjectInformation(IntPtr hObj, int nIndex,
   [Out] byte [] pvInfo, uint nLength, out uint lpnLengthNeeded);

VB.NET Signature:

  <DllImport("user32.dll", SetLastError:=True)> _
  Private Shared Function GetUserObjectInformation(ByVal hObj As IntPtr, ByVal nIndex As Int32, ByRef pvInfo As Byte(), <MarshalAs(UnmanagedType.I4)> ByVal nLength As Int32, <MarshalAs(UnmanagedType.I4)> ByRef lpnLengthNeeded As Int32) As Boolean
  End Function

User-Defined Types:

None.

VB.NET Notes:

This line is required at the top of the code module for the 'MarshalAs' attribute:

  Imports System.Runtime.InteropServices

nIndex constant values:

  Private Const UOI_FLAGS = 1
  Private Const UOI_NAME = 2
  Private Const UOI_TYPE = 3
  Private Const UOI_USER_SID = 4

C# Notes:

nIndex constant values

  private const int UOI_FLAGS = 1;
  private const int UOI_NAME = 2;
  private const int UOI_TYPE = 3;
  private const int UOI_USER_SID = 4;
  private const int UOI_HEAPSIZE = 5; //Windows Server 2003 and Windows XP/2000:  This value is not supported.
  private const int UOI_IO = 6;       //Windows Server 2003 and Windows XP/2000:  This value is not supported.

Tips & Tricks:

Please add some!

Sample Code:

    [DllImport("user32.dll", SetLastError = true)]
    static extern bool GetUserObjectInformation(IntPtr hObj, int nIndex,
       out ulong pvInfo, uint nLength, out uint lpnLengthNeeded);

    private void Form1_Load(object sender, EventArgs e)
    {
        Desktop desktop = Desktop.GetCurrent(); //Desktop class from http://www.codeproject.com/KB/cs/csdesktopswitching.aspx
        IntPtr hdesk = desktop.DesktopHandle;
        ulong heapsize;
        uint lengthNeeded;
        if (GetUserObjectInformation(hdesk, UOI_HEAPSIZE, out heapsize, sizeof(ulong), out lengthNeeded))
        {
            Text = "Heapsize:" + heapsize;
        }
    }

Alternative Managed API:

Do you know one? Please contribute it!

Documentation