Compartir a través de


Función WTSVirtualChannelRead (wtsapi32.h)

Lee datos del extremo del servidor de un canal virtual.

WTSVirtualChannelRead lee los datos escritos por una llamada virtualChannelWrite al final del canal virtual.

Sintaxis

BOOL WTSVirtualChannelRead(
  [in]  HANDLE hChannelHandle,
  [in]  ULONG  TimeOut,
  [out] PCHAR  Buffer,
  [in]  ULONG  BufferSize,
  [out] PULONG pBytesRead
);

Parámetros

[in] hChannelHandle

Identificador de un canal virtual abierto por la función WTSVirtualChannelOpen .

[in] TimeOut

Especifica el tiempo de espera, en milisegundos. Si TimeOut es cero, WTSVirtualChannelRead devuelve inmediatamente si no hay datos que leer. Si TimeOut es INFINITE (definido en Winbase.h), la función espera indefinidamente hasta que se lean los datos.

[out] Buffer

Puntero a un búfer que recibe un fragmento de datos leídos desde el extremo del servidor del canal virtual. La cantidad máxima de datos que el servidor puede recibir en una sola llamada WTSVirtualChannelRead es CHANNEL_CHUNK_LENGTH bytes. Si la llamada a VirtualChannelWrite del cliente escribe un bloque de datos mayor, el servidor debe realizar varias llamadas WTSVirtualChannelRead .

En ciertos casos, los Servicios de Escritorio remoto colocan una estructura de CHANNEL_PDU_HEADER al principio de cada fragmento de datos leído por la función WTSVirtualChannelRead . Esto se producirá si el archivo DLL de cliente establece la opción CHANNEL_OPTION_SHOW_PROTOCOL cuando llama a la función VirtualChannelInit para inicializar el canal virtual. Esto también se producirá si el canal es un canal virtual dinámico escrito en mediante el método IWTSVirtualChannel::Write . De lo contrario, el búfer recibe solo los datos escritos en la llamada a VirtualChannelWrite .

[in] BufferSize

Especifica el tamaño, en bytes, del búfer. Si el fragmento de datos del búfer va precedido de una estructura de CHANNEL_PDU_HEADER , el valor de este parámetro debe ser al menos CHANNEL_PDU_LENGTH. De lo contrario, el valor de este parámetro debe ser al menos CHANNEL_CHUNK_LENGTH.

[out] pBytesRead

Puntero a una variable que recibe el número de bytes leídos.

Valor devuelto

Si la función se ejecuta correctamente, el valor devuelto es un valor distinto de cero.

Si la función no se realiza correctamente, el valor devuelto es cero. Para obtener información de error extendida, llame a GetLastError.

Comentarios

NotaWTSVirtualChannelRead no es seguro para subprocesos. Para acceder a un canal virtual desde varios subprocesos, o para realizar E/S asincrónica a través de un canal virtual, use WTSVirtualChannelQuery con WTSVirtualFileHandle.
 

Requisitos

Requisito Value
Cliente mínimo compatible Windows Vista
Servidor mínimo compatible Windows Server 2008
Plataforma de destino Windows
Encabezado wtsapi32.h
Library Wtsapi32.lib
Archivo DLL Wtsapi32.Dll

Consulte también

CHANNEL_PDU_HEADER

IWTSVirtualChannel::Write

VirtualChannelWrite

WTSVirtualChannelQuery

WTSVirtualChannelWrite