Programming reference

The [In] and [Out] labels in the function calling conventions are for clarification only.

LFVirtualChannelOpen

This function is used to open a specified virtual channel.

Calling convention


CTX_STAT CTXAPI LFVirtualChannelOpen(
    uint32_t sessionId,
    const char* pVirtualName,
    VCHANDLE* pHandle);

<!--NeedCopy-->

Parameters

Parameter Description
[In] sessionId ICA session ID (or LF_CURRENT_SESSION)
[In] pVirtualName Pointer to virtual channel name
[Out] pHandle Pointer to virtual channel handle

List of values for pSessionId:

# define LF_CURRENT_SESSION ((uint32_t)-1) /* current session ID used by both LFVirtualChannelOpen or LFWaitForSessionEvent */

<!--NeedCopy-->

Return value

The function returns:

  • CTXSTAT_SUCCESS
  • CTXSTAT_ERRORS

Remarks

  1. A virtual channel name can contain a maximum of seven characters (excluding character ‘\0’).
  2. Do not prefix a virtual channel name with CTX.

LFVirtualChannelRead

This function is used to read data from a specified virtual channel.

Calling convention


CTX_STAT CTXAPI LFVirtualChannelRead(
    VCHANDLE handle,
    void* pBuffer,
    size_t length,
    ssize_t* pBytesRead);

<!--NeedCopy-->

Parameters

Parameter Description
[In] handle Virtual channel handle previously returned by LFVirtualChannelOpen
[In] pBuffer Pointer to buffer that receives the data to read
[In] length Length of the data to read (bytes)
[Out] pBytesRead Returns the amount of data that has been read

Return value

The function returns:

  • CTXSTAT_SUCCESS
  • CTXSTAT_ERRORS

LFVirtualChannelWrite

This function is used to write data to a specified virtual channel.

Calling convention


CTX_STAT CTXAPI LFVirtualChannelWrite(
    VCHANDLE handle,
    const void* pBuffer,
    size_t length,
    ssize_t* pBytesWritten);

<!--NeedCopy-->

Parameters

Parameter Description
[In] handle Virtual channel handle previously returned by LFVirtualChannelOpen
[In] pBuffer Pointer to buffer containing the data to write
[In] length Length of the data to write (bytes)
[Out] pBytesWritten Returns the amount of data that has been written

Return value

The function returns:

  • CTXSTAT_SUCCESS
  • CTXSTAT_ERRORS

LFVirtualChannelQuery

This function is used to query data from a specified virtual channel.

Calling convention


CTX_STAT CTXAPI LFVirtualChannelQuery(
    VCHANDLE handle,
    LF_VIRTUAL_CLASS virtualClass,
    void** ppBuffer,
    size_t* pBytesReturned);

<!--NeedCopy-->

Parameters

Parameter Description
[In] handle Virtual channel handle previously returned by LFVirtualChannelOpen.
[In] virtualClass The type of information requested (LF_VIRTUAL_CLASS).
[Out] ppBuffer Pointer to a buffer pointer, which is allocated upon successful return. After a successful return, the caller is responsible for deallocating the buffer returned.
[Out]pBytesReturned Pointer to a size_t that is updated with the length of the data returned in the allocated buffer upon successful return.

List of values for virtualClass:


LFVirtualClientData /* virtual channel client module data (C2H data) */

<!--NeedCopy-->

Return value

The function returns:

  • CTXSTAT_SUCCESS
  • CTXSTAT_ERRORS

LFVirtualChannelPurgeInput

This function is used to purge all queued input data sent from the client to the server on a specific virtual channel.

Calling convention


CTX_STAT CTXAPI LFVirtualChannelPurgeInput(
    VCHANDLE handle);

<!--NeedCopy-->

Parameters

Parameter Description
[In] handle Virtual channel handle previously returned by LFVirtualChannelOpen

Return value

The function returns:

  • CTXSTAT_SUCCESS
  • CTXSTAT_ERRORS

LFVirtualChannelPurgeOutput

This function is used to purge all queued output data sent from the server to the client on a specific virtual channel.

Calling convention


CTX_STAT CTXAPI LFVirtualChannelPurgeOutput(
    VCHANDLE handle);

<!--NeedCopy-->

Parameters

Parameter Description
[In] handle Virtual channel handle previously returned by LFVirtualChannelOpen

Return value

The function returns:

  • CTXSTAT_SUCCESS

  • CTXSTAT_ERRORS

LFVirtualChannelClose

This function is used to close a specified virtual channel.

Calling convention


CTX_STAT CTXAPI LFVirtualChannelClose(
    VCHANDLE handle);

<!--NeedCopy-->

Parameters

Parameter Description
[In] handle Virtual channel handle previously returned by LFVirtualChannelOpen

Return value

The function returns:

  • CTXSTAT_SUCCESS
  • CTXSTAT_ERRORS

LFSessionEventInit

This function opens a handle for session event monitoring.

Calling convention


CTX_STAT CTXAPI LFSessionEventInit(
    EVTHANDLE* pHandle);

<!--NeedCopy-->

Parameters

Parameter Description
[Out] pHandle Pointer to a session event handle.

Return value

  • CTXSTAT_SUCCESS
  • CTXSTAT_ERRORS

Remarks

Please run LFSessionEventInit at least once.

LFWaitForSessionEvent

This function subscribes to and waits for session events.

Calling convention


CTX_STAT CTXAPI LFWaitForSessionEvent(
    EVTHANDLE* pHandle,
    uint32_t* pSessionId,
    uint32_t* pEventMask,
    uint32_t timeoutMs);

<!--NeedCopy-->

Parameters

Parameter Description
[Out] pHandle Pointer to the session event handle returned by LFSessionEventInit
[In/Out] pSessionId Pointer to a specific session ID or LF_ALL_SESSION
[In/Out] pEventMask Pointer to subscribed session events/Pointer to session events when subscribed session events happen
[In] timeoutMs Wait timeout in milliseconds

List of values for pSessionId:

# define LF_CURRENT_SESSION ((uint32_t)-1) /* current session ID used by both LFVirtualChannelOpen or LFWaitForSessionEvent */
# define LF_ALL_SESSION ((uint32_t)-2) /* only used by LFWaitForSessionEvent subcribe all session events /

<!--NeedCopy-->

List of session events for pEventMask:

# define WEVENT_DELETE 0x00000002 /* session delete */
# define WEVENT_CONNECT 0x00000008 /* session connect to client */
# define WEVENT_DISCONNECT 0x00000010 /* session disconnect from client */
# define WEVENT_LOGON 0x00000020 /* session logon */
# define WEVENT_LOGOFF 0x00000040 /* session logoff */
# define WEVENT_RECONNECT 0x00000800 /* session reconnect to client */

<!--NeedCopy-->

Return value

The function returns:

  • CTXSTAT_SUCCESS
  • CTXSTAT_ERRORS

Remarks

This LFWaitForSessionEvent function keeps blocking until the following conditions are met:

  1. Subscribed session events happen when the return status shows CTXSTAT_SUCCESS.
  2. CTXSTAT_ERRORS (including timeout).

LFSessionEventDestroy

This function closes the handle for session event monitoring.

Calling convention


CTX_STAT CTXAPI LFSessionEventDestroy(
    EVTHANDLE* pHandle);

<!--NeedCopy-->

Parameters

Parameter Description
[In] pHandle Pointer to the session event handle previously returned by LFSessionEventInit.

Return value

  • CTXSTAT_SUCCESS
  • CTXSTAT_ERRORS

All return values


CTXSTAT_SUCCESS = 0,
CTXSTAT_FAILURE = 1,
CTXSTAT_INVALID_PARAMETER = 2,
CTXSTAT_NOT_ENOUGH_MEMORY = 3,
CTXSTAT_DATA_ERROR = 4,
CTXSTAT_NOT_SUPPORTED = 5,
CTXSTAT_WINSTA_NO_SESSION = 6, /* no session running */
CTXSTAT_CHANNEL_NOT_BOUND = 7, /* fail to get virtual channel info from client */
CTXSTAT_CANTOPEN = 8,
CTXSTAT_TIMEOUT = 9,
CTXSTAT_VC_DISABLED = 10,
CTXSTAT_VC_DISCONNECTED = 11,
CTXSTAT_VC_ALREADY_IN_USE = 12
<!--NeedCopy-->
Programming reference