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

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

      `FUNCTION_MAPPER, STDCALL_CONVENTION`

  - ### Method Summary

    All Methods Instance Methods Abstract Methods
    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 Detail

    - #### 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 Detail

    - #### 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.