Share via


CHANNEL_OPEN_EVENT_FN función de devolución de llamada (cchannel.h)

Función de devolución de llamada definida por la aplicación que los Servicios de Escritorio remoto llaman a para notificar al archivo DLL de cliente de eventos de un canal virtual específico.

El tipo PCHANNEL_OPEN_EVENT_FN define un puntero a esta función de devolución de llamada. VirtualChannelOpenEvent es un marcador de posición para el nombre de función definido por la aplicación o la biblioteca.

Sintaxis

CHANNEL_OPEN_EVENT_FN ChannelOpenEventFn;

VOID VCAPITYPE ChannelOpenEventFn(
  [in] DWORD openHandle,
  [in] UINT event,
  [in] LPVOID pData,
  [in] UINT32 dataLength,
  [in] UINT32 totalLength,
  [in] UINT32 dataFlags
)
{...}

Parámetros

[in] openHandle

Identificador del canal virtual. Este es el identificador devuelto en el parámetro pOpenHandle de la función VirtualChannelOpen .

[in] event

Indica el evento que provocó la notificación. Este parámetro puede ser uno de los valores siguientes.

CHANNEL_EVENT_DATA_RECEIVED

El canal virtual recibió datos del extremo del servidor. pData es un puntero a un fragmento de los datos. dataLength indica el tamaño de este fragmento. totalLength indica el tamaño total de los datos escritos por el servidor.

CHANNEL_EVENT_WRITE_CANCELLED

Se ha cancelado una operación de escritura iniciada por una llamada a VirtualChannelWrite . pData es el valor especificado en el parámetro pUserData de VirtualChannelWrite.

Se cancela una operación de escritura cuando se desconecta la sesión del cliente. Esta notificación le permite liberar cualquier memoria asociada a la operación de escritura.

CHANNEL_EVENT_WRITE_COMPLETE

Se ha completado una operación de escritura iniciada por una llamada a VirtualChannelWrite . pData es el valor especificado en el parámetro pUserData de VirtualChannelWrite.

[in] pData

Puntero a datos adicionales para el evento. El tipo de datos depende del evento, como se ha descrito anteriormente en las descripciones del evento.

Si el evento es CHANNEL_EVENT_DATA_RECEIVED, los datos escritos por el servidor se dividen en fragmentos de no más de CHANNEL_CHUNK_LENGTH bytes. El parámetro dataFlags indica si el fragmento actual está al principio, al medio o al final del bloque de datos escritos por el servidor.

Tenga en cuenta que el tamaño de este parámetro puede ser mayor que el valor especificado por el parámetro dataLength . La aplicación debe leer solo el número de bytes especificados por dataLength.

[in] dataLength

Especifica el tamaño, en bytes, de los datos del búfer pData .

[in] totalLength

Especifica el tamaño total, en bytes, de los datos escritos por una sola operación de escritura en el extremo del servidor del canal virtual.

[in] dataFlags

Proporciona información sobre el fragmento de datos que se recibe en un evento de CHANNEL_EVENT_DATA_RECEIVED . Se establecerán las marcas de bits siguientes.

Tenga en cuenta que no debe realizar comparaciones directas con el operador '==' al comparar los valores de la lista siguiente; en su lugar, use los métodos de comparación descritos.

CHANNEL_FLAG_FIRST

El fragmento es el principio de los datos escritos por una sola operación de escritura.

Use comparaciones bit a bit al comparar esta marca.

CHANNEL_FLAG_LAST

El fragmento es el final de los datos escritos por una sola operación de escritura.

Use comparaciones bit a bit al comparar esta marca.

CHANNEL_FLAG_MIDDLE

Este es el valor predeterminado. El fragmento está en medio de un bloque de datos escritos por una sola operación de escritura.

No use comparaciones bit a bit para comparar este valor de marca directamente. En su lugar, use comparaciones bit a bit para determinar que el valor de marca no es CHANNEL_FLAG_FIRST o CHANNEL_FLAG_LAST. Esto se hace mediante la siguiente comparación: Result = !(flags & CHANNEL_FLAG_FIRST) && !(flags & CHANNEL_FLAG_LAST).

CHANNEL_FLAG_ONLY

Combina los valores de CHANNEL_FLAG_FIRST y CHANNEL_FLAG_LAST . El fragmento contiene todos los datos de una sola operación de escritura.

Use comparaciones bit a bit al comparar esta marca.

Valor devuelto

Esta función no tiene valores devueltos.

Comentarios

El archivo DLL de cliente usa la función VirtualChannelOpen para registrar una función VirtualChannelOpenEvent para un canal virtual específico.

Puede usar la misma función VirtualChannelOpenEvent para varias llamadas a VirtualChannelOpen.

Se puede llamar a esta función con un tipo de evento diferente mientras se ejecuta. Por ejemplo, se podría llamar a con CHANNEL_EVENT_WRITE_COMPLETE o CHANNEL_EVENT_WRITE_CANCELLED mientras procesa el evento CHANNEL_EVENT_DATA_RECEIVED . Tenga en cuenta que no se llamará a esta función con el mismo tipo de evento que está procesando actualmente.

Requisitos

Requisito Value
Cliente mínimo compatible Windows Vista
Servidor mínimo compatible Windows Server 2008
Plataforma de destino Windows
Encabezado cchannel.h

Consulte también

VirtualChannelOpen