Wtsapi32 (JNA API)
Description: declaration: package: com.sun.jna.platform.win32, interface: Wtsapi32

Package com.sun.jna.platform.win32

# Interface Wtsapi32

All Superinterfaces:
  `AltCallingConvention`, `Library`, `StdCall`, `StdCallLibrary`

public interface Wtsapi32 extends StdCallLibrary

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Interface
  Description
  `static class`
  `Wtsapi32.WTS_CLIENT_ADDRESS`
  Contains the client network address of a Remote Desktop Services session.
  `static interface`
  `Wtsapi32.WTS_CONNECTSTATE_CLASS`
  Specifies the connection state of a Remote Desktop Services session.
  `static interface`
  `Wtsapi32.WTS_INFO_CLASS`
  Contains values that indicate the type of session information to retrieve in a call to the `WTSQuerySessionInformation(com.sun.jna.platform.win32.WinNT.HANDLE, int, int, com.sun.jna.ptr.PointerByReference, com.sun.jna.ptr.IntByReference)` function.
  `static class`
  `Wtsapi32.WTS_PROCESS_INFO_EX`
  Contains extended information about a process running on a Remote Desktop Session Host (RD Session Host) server.
  `static class`
  `Wtsapi32.WTS_SESSION_INFO`
  Contains information about a client session on a Remote Desktop Session Host (RD Session Host) server.
  `static class`
  `Wtsapi32.WTSINFO`
  Contains information about a Remote Desktop Services session.

  ## Nested classes/interfaces inherited from interface com.sun.jna.Library

  `Library.Handler`

  ## Nested classes/interfaces inherited from interface com.sun.jna.win32.StdCallLibrary

  `StdCallLibrary.StdCallCallback`

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final int`
  `DOMAIN_LENGTH`
  Defined in `winsta.h` and present in this interface to properly size the `Wtsapi32.WTSINFO` structure.
  `static final Wtsapi32`
  `INSTANCE`
  `static final int`
  `NOTIFY_FOR_ALL_SESSIONS`
  `static final int`
  `NOTIFY_FOR_THIS_SESSION`
  `static final int`
  `USERNAME_LENGTH`
  Defined in `winsta.h` and present in this interface to properly size the `Wtsapi32.WTSINFO` structure.
  `static final int`
  `WINSTATIONNAME_LENGTH`
  Defined in `winsta.h` and present in this interface to properly size the `Wtsapi32.WTSINFO` structure.
  `static final int`
  `WTS_ANY_SESSION`
  Specifies any-session (SessionId)
  `static final int`
  `WTS_CONSOLE_CONNECT`
  The session identified by lParam was connected to the console terminal or RemoteFX session.
  `static final int`
  `WTS_CONSOLE_DISCONNECT`
  The session identified by lParam was disconnected from the console terminal or RemoteFX session.
  `static final WinNT.HANDLE`
  `WTS_CURRENT_SERVER_HANDLE`
  Specifies the current server
  `static final int`
  `WTS_CURRENT_SESSION`
  Specifies the current session (SessionId)
  `static final int`
  `WTS_PROCESS_INFO_LEVEL_0`
  `static final int`
  `WTS_PROCESS_INFO_LEVEL_1`
  `static final int`
  `WTS_REMOTE_CONNECT`
  The session identified by lParam was connected to the remote terminal.
  `static final int`
  `WTS_REMOTE_DISCONNECT`
  The session identified by lParam was disconnected from the remote terminal.
  `static final int`
  `WTS_SESSION_LOCK`
  The session identified by lParam has been locked.
  `static final int`
  `WTS_SESSION_LOGOFF`
  A user has logged off the session identified by lParam.
  `static final int`
  `WTS_SESSION_LOGON`
  A user has logged on to the session identified by lParam.
  `static final int`
  `WTS_SESSION_REMOTE_CONTROL`
  The session identified by lParam has changed its remote controlled status.
  `static final int`
  `WTS_SESSION_UNLOCK`
  The session identified by lParam has been unlocked.

  ### Fields inherited from interface com.sun.jna.Library

  `OPTION_ALLOW_OBJECTS, OPTION_CALLING_CONVENTION, OPTION_CLASSLOADER, OPTION_FUNCTION_MAPPER, OPTION_INVOCATION_MAPPER, OPTION_OPEN_FLAGS, OPTION_STRING_ENCODING, OPTION_STRUCTURE_ALIGNMENT, OPTION_SYMBOL_PROVIDER, OPTION_TYPE_MAPPER`

  ### Fields inherited from interface com.sun.jna.win32.StdCallLibrary

  `FUNCTION_MAPPER, STDCALL_CONVENTION`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `boolean`
  `WTSEnumerateProcessesEx(WinNT.HANDLE hServer, IntByReference pLevel, int SessionID, PointerByReference ppProcessInfo, IntByReference pCount)`
  Retrieves information about the active processes on the specified Remote Desktop Session Host (RD Session Host) server or Remote Desktop Virtualization Host (RD Virtualization Host) server.
  `boolean`
  `WTSEnumerateSessions(WinNT.HANDLE hServer, int Reserved, int Version, PointerByReference ppSessionInfo, IntByReference pCount)`
  Retrieves a list of sessions on a Remote Desktop Session Host (RD Session Host) server.
  `void`
  `WTSFreeMemory(Pointer pMemory)`
  Frees memory allocated by a Remote Desktop Services function.
  `boolean`
  `WTSFreeMemoryEx(int WTSTypeClass, Pointer pMemory, int NumberOfEntries)`
  Frees memory that contains WTS_PROCESS_INFO_EX or WTS_SESSION_INFO_1 structures allocated by a Remote Desktop Services function.
  `boolean`
  `WTSQuerySessionInformation(WinNT.HANDLE hServer, int SessionId, int WTSInfoClass, PointerByReference ppBuffer, IntByReference pBytesReturned)`
  Retrieves session information for the specified session on the specified Remote Desktop Session Host (RD Session Host) server.
  `boolean`
  `WTSRegisterSessionNotification(WinDef.HWND hWnd, int dwFlags)`
  Registers the specified window to receive session change notifications.
  `boolean`
  `WTSUnRegisterSessionNotification(WinDef.HWND hWnd)`
  Unregisters the specified window so that it receives no further session change notifications.

- ## Field Details

  - ### INSTANCE

    static final Wtsapi32 INSTANCE

  - ### NOTIFY_FOR_ALL_SESSIONS

    static final int NOTIFY_FOR_ALL_SESSIONS
    See Also:
      - Constant Field Values

  - ### NOTIFY_FOR_THIS_SESSION

    static final int NOTIFY_FOR_THIS_SESSION
    See Also:
      - Constant Field Values

  - ### WTS_CONSOLE_CONNECT

    static final int WTS_CONSOLE_CONNECT
    The session identified by lParam was connected to the console terminal or RemoteFX session.
    See Also:
      - Constant Field Values

  - ### WTS_CONSOLE_DISCONNECT

    static final int WTS_CONSOLE_DISCONNECT
    The session identified by lParam was disconnected from the console terminal or RemoteFX session.
    See Also:
      - Constant Field Values

  - ### WTS_REMOTE_CONNECT

    static final int WTS_REMOTE_CONNECT
    The session identified by lParam was connected to the remote terminal.
    See Also:
      - Constant Field Values

  - ### WTS_REMOTE_DISCONNECT

    static final int WTS_REMOTE_DISCONNECT
    The session identified by lParam was disconnected from the remote terminal.
    See Also:
      - Constant Field Values

  - ### WTS_SESSION_LOGON

    static final int WTS_SESSION_LOGON
    A user has logged on to the session identified by lParam.
    See Also:
      - Constant Field Values

  - ### WTS_SESSION_LOGOFF

    static final int WTS_SESSION_LOGOFF
    A user has logged off the session identified by lParam.
    See Also:
      - Constant Field Values

  - ### WTS_SESSION_LOCK

    static final int WTS_SESSION_LOCK
    The session identified by lParam has been locked.
    See Also:
      - Constant Field Values

  - ### WTS_SESSION_UNLOCK

    static final int WTS_SESSION_UNLOCK
    The session identified by lParam has been unlocked.
    See Also:
      - Constant Field Values

  - ### WTS_SESSION_REMOTE_CONTROL

    static final int WTS_SESSION_REMOTE_CONTROL
    The session identified by lParam has changed its remote controlled status. To determine the status, call GetSystemMetrics and check the SM_REMOTECONTROL metric.
    See Also:
      - Constant Field Values

  - ### WTS_CURRENT_SERVER_HANDLE

    static final WinNT.HANDLE WTS_CURRENT_SERVER_HANDLE
    Specifies the current server

  - ### WTS_CURRENT_SESSION

    static final int WTS_CURRENT_SESSION
    Specifies the current session (SessionId)
    See Also:
      - Constant Field Values

  - ### WTS_ANY_SESSION

    static final int WTS_ANY_SESSION
    Specifies any-session (SessionId)
    See Also:
      - Constant Field Values

  - ### WTS_PROCESS_INFO_LEVEL_0

    static final int WTS_PROCESS_INFO_LEVEL_0
    See Also:
      - Constant Field Values

  - ### WTS_PROCESS_INFO_LEVEL_1

    static final int WTS_PROCESS_INFO_LEVEL_1
    See Also:
      - Constant Field Values

  - ### DOMAIN_LENGTH

    static final int DOMAIN_LENGTH
    Defined in `winsta.h` and present in this interface to properly size the `Wtsapi32.WTSINFO` structure.
    See Also:
      - Constant Field Values

  - ### USERNAME_LENGTH

    static final int USERNAME_LENGTH
    Defined in `winsta.h` and present in this interface to properly size the `Wtsapi32.WTSINFO` structure.
    See Also:
      - Constant Field Values

  - ### WINSTATIONNAME_LENGTH

    static final int WINSTATIONNAME_LENGTH
    Defined in `winsta.h` and present in this interface to properly size the `Wtsapi32.WTSINFO` structure.
    See Also:
      - Constant Field Values

- ## Method Details

  - ### WTSEnumerateSessions

    boolean WTSEnumerateSessions(WinNT.HANDLE hServer, int Reserved, int Version, PointerByReference ppSessionInfo, IntByReference pCount)
    Retrieves a list of sessions on a Remote Desktop Session Host (RD Session Host) server.
    Parameters:
      `hServer` - A handle to the RD Session Host server.

      You can use the `WTSOpenServer` or `WTSOpenServerEx` functions to retrieve a handle to a specific server, or `WTS_CURRENT_SERVER_HANDLE` to use the RD Session Host server that hosts your application.

      `Reserved` - This parameter is reserved. It must be zero.
      `Version` - The version of the enumeration request. This parameter must be 1.
      `ppSessionInfo` - A pointer to an array of `Wtsapi32.WTS_SESSION_INFO` structures that represent the retrieved sessions. To free the returned buffer, call the `WTSFreeMemory(com.sun.jna.Pointer)` function.
      `pCount` - A pointer to the number of `WTS_SESSION_INFO` structures returned in the `ppSessionInfo` parameter.
    Returns:
      Returns `false` if this function fails. If this function succeeds, returns `true`.

      To get extended error information, call `Kernel32.GetLastError()`.

  - ### WTSQuerySessionInformation

    boolean WTSQuerySessionInformation(WinNT.HANDLE hServer, int SessionId, int WTSInfoClass, PointerByReference ppBuffer, IntByReference pBytesReturned)
    Retrieves session information for the specified session on the specified Remote Desktop Session Host (RD Session Host) server. It can be used to query session information on local and remote RD Session Host servers.
    Parameters:
      `hServer` - A handle to an RD Session Host server. Specify a handle opened by the `WTSOpenServer` function, or specify `WTS_CURRENT_SERVER_HANDLE` to indicate the RD Session Host server on which your application is running.
      `SessionId` - A Remote Desktop Services session identifier. To indicate the session in which the calling application is running (or the current session) specify `WTS_CURRENT_SESSION`. Only specify `WTS_CURRENT_SESSION` when obtaining session information on the local server. If `WTS_CURRENT_SESSION` is specified when querying session information on a remote server, the returned session information will be inconsistent. Do not use the returned data.

      You can use the `WTSEnumerateSessionsEx` function to retrieve the identifiers of all sessions on a specified RD Session Host server.

      To query information for another user's session, you must have Query Information permission.

      `WTSInfoClass` - A value of the `Wtsapi32.WTS_INFO_CLASS` enumeration that indicates the type of session information to retrieve in a call to the `WTSQuerySessionInformation` function.
      `ppBuffer` - A pointer to a variable that receives a pointer to the requested information. The format and contents of the data depend on the information class specified in the `WTSInfoClass` parameter. To free the returned buffer, call the `WTSFreeMemory(com.sun.jna.Pointer)` function.
      `pBytesReturned` - A pointer to a variable that receives the size, in bytes, of the data returned in ppBuffer.
    Returns:
      If the function succeeds, returns `true`.

      If the function fails, returns `false`. To get extended error information, call `Kernel32.GetLastError()`.

  - ### WTSFreeMemory

    void WTSFreeMemory(Pointer pMemory)
    Frees memory allocated by a Remote Desktop Services function.
    Parameters:
      `pMemory` - Pointer to the memory to free.

  - ### WTSRegisterSessionNotification

    boolean WTSRegisterSessionNotification(WinDef.HWND hWnd, int dwFlags)
    Registers the specified window to receive session change notifications.
    Parameters:
      `hWnd` - [in] Handle of the window to receive session change notifications.
      `dwFlags` - [in] Specifies which session notifications are to be received. This parameter can be one of the following values.
    Returns:
      If the function succeeds, the return value is TRUE. Otherwise, it is FALSE. To get extended error information, call GetLastError.

  - ### WTSUnRegisterSessionNotification

    boolean WTSUnRegisterSessionNotification(WinDef.HWND hWnd)
    Unregisters the specified window so that it receives no further session change notifications.
    Parameters:
      `hWnd` - [in] Handle of the window to be unregistered from receiving session notifications.
    Returns:
      If the function succeeds, the return value is TRUE. Otherwise, it is FALSE. To get extended error information, call GetLastError.

  - ### WTSEnumerateProcessesEx

    boolean WTSEnumerateProcessesEx(WinNT.HANDLE hServer, IntByReference pLevel, int SessionID, PointerByReference ppProcessInfo, IntByReference pCount)
    Retrieves information about the active processes on the specified Remote Desktop Session Host (RD Session Host) server or Remote Desktop Virtualization Host (RD Virtualization Host) server.
    Parameters:
      `hServer` - A handle to an RD Session Host server. Specify a handle opened by the WTSOpenServer function, or specify WTS_CURRENT_SERVER_HANDLE to indicate the server on which your application is running.
      `pLevel` - A pointer to a DWORD variable that, on input, specifies the type of information to return. To return an array of WTS_PROCESS_INFO structures, specify zero. To return an array of WTS_PROCESS_INFO_EX structures, specify one. If you do not specify a valid value for this parameter, on output, WTSEnumerateProcessesEx sets this parameter to one and returns an error. Otherwise, on output, WTSEnumerateProcessesEx does not change the value of this parameter.
      `SessionID` - The session for which to enumerate processes. To enumerate processes for all sessions on the server, specify WTS_ANY_SESSION.
      `ppProcessInfo` - A pointer to a variable that receives a pointer to an array of WTS_PROCESS_INFO or WTS_PROCESS_INFO_EX structures. The type of structure is determined by the value passed to the pLevel parameter. Each structure in the array contains information about an active process. When you have finished using the array, free it by calling the WTSFreeMemoryEx function. You should also set the pointer to NULL.
      `pCount` - A pointer to a variable that receives the number of structures returned in the buffer referenced by the ppProcessInfo parameter.
    Returns:
      If the function succeeds, the return value is a nonzero value. If the function fails, the return value is zero. To get extended error information, call the GetLastError function.

  - ### WTSFreeMemoryEx

    boolean WTSFreeMemoryEx(int WTSTypeClass, Pointer pMemory, int NumberOfEntries)
    Frees memory that contains WTS_PROCESS_INFO_EX or WTS_SESSION_INFO_1 structures allocated by a Remote Desktop Services function.
    Parameters:
      `WTSTypeClass` - A value of the WTS_TYPE_CLASS enumeration type that specifies the type of structures contained in the buffer referenced by the pMemory parameter.
      `pMemory` - A pointer to the buffer to free.
      `NumberOfEntries` - The number of elements in the buffer referenced by the pMemory parameter.
    Returns:
      If the function succeeds, the return value is a nonzero value. If the function fails, the return value is zero. To get extended error information, call the GetLastError function.