Compartilhar via


CHANNEL_OPEN_EVENT_FN função de retorno de chamada (cchannel.h)

Uma função de retorno de chamada definida pelo aplicativo que os Serviços de Área de Trabalho Remota chamam para notificar a DLL do cliente de eventos para um canal virtual específico.

O tipo PCHANNEL_OPEN_EVENT_FN define um ponteiro para essa função de retorno de chamada. VirtualChannelOpenEvent é um espaço reservado para o nome da função definida pelo aplicativo ou pela biblioteca.

Sintaxe

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

Manipule para o canal virtual. Esse é o identificador retornado no parâmetro pOpenHandle da função VirtualChannelOpen .

[in] event

Indica o evento que causou a notificação. Esse parâmetro pode usar um dos valores a seguir.

CHANNEL_EVENT_DATA_RECEIVED

O canal virtual recebeu dados da extremidade do servidor. pData é um ponteiro para uma parte dos dados. dataLength indica o tamanho dessa parte. totalLength indica o tamanho total dos dados gravados pelo servidor.

CHANNEL_EVENT_WRITE_CANCELLED

Uma operação de gravação iniciada por uma chamada VirtualChannelWrite foi cancelada. pData é o valor especificado no parâmetro pUserData de VirtualChannelWrite.

Uma operação de gravação é cancelada quando a sessão do cliente é desconectada. Essa notificação permite liberar qualquer memória associada à operação de gravação.

CHANNEL_EVENT_WRITE_COMPLETE

Uma operação de gravação iniciada por uma chamada VirtualChannelWrite foi concluída. pData é o valor especificado no parâmetro pUserData de VirtualChannelWrite.

[in] pData

Ponteiro para dados adicionais para o evento. O tipo de dados depende do evento, conforme descrito anteriormente nas descrições do evento.

Se o evento for CHANNEL_EVENT_DATA_RECEIVED, os dados gravados pelo servidor serão divididos em partes de não mais do que CHANNEL_CHUNK_LENGTH bytes. O parâmetro dataFlags indica se a parte atual está no início, no meio ou no final do bloco de dados gravado pelo servidor.

Observe que o tamanho desse parâmetro pode ser maior que o valor especificado pelo parâmetro dataLength . O aplicativo deve ler apenas o número de bytes especificado por dataLength.

[in] dataLength

Especifica o tamanho, em bytes, dos dados no buffer pData .

[in] totalLength

Especifica o tamanho total, em bytes, dos dados gravados por uma única operação de gravação na extremidade do servidor do canal virtual.

[in] dataFlags

Fornece informações sobre a parte dos dados recebidos em um evento de CHANNEL_EVENT_DATA_RECEIVED . Os sinalizadores de bit a seguir serão definidos.

Observe que você não deve fazer comparações diretas usando o operador '==' ao comparar os valores na lista a seguir; Em vez disso, use os métodos de comparação descritos.

CHANNEL_FLAG_FIRST

A parte é o início dos dados gravados por uma única operação de gravação.

Use comparações bit a bit ao comparar esse sinalizador.

CHANNEL_FLAG_LAST

A parte é o final dos dados gravados por uma única operação de gravação.

Use comparações bit a bit ao comparar esse sinalizador.

CHANNEL_FLAG_MIDDLE

Esse é o padrão. A parte está no meio de um bloco de dados gravados por uma única operação de gravação.

Não use comparações bit a bit para comparar esse valor de sinalizador diretamente. Em vez disso, use comparações bit a bit para determinar que o valor do sinalizador não é CHANNEL_FLAG_FIRST ou CHANNEL_FLAG_LAST. Isso é feito usando a seguinte comparação: Result = !(flags & CHANNEL_FLAG_FIRST) && !(flags & CHANNEL_FLAG_LAST).

CHANNEL_FLAG_ONLY

Combina os valores CHANNEL_FLAG_FIRST e CHANNEL_FLAG_LAST . A parte contém todos os dados de uma única operação de gravação.

Use comparações bit a bit ao comparar esse sinalizador.

Retornar valor

Essa função não tem valores retornados.

Comentários

A DLL do cliente usa a função VirtualChannelOpen para registrar uma função VirtualChannelOpenEvent para um canal virtual específico.

Você pode usar a mesma função VirtualChannelOpenEvent para várias chamadas para VirtualChannelOpen.

Essa função pode ser chamada com um tipo de evento diferente enquanto está em execução. Por exemplo, ele pode ser chamado com CHANNEL_EVENT_WRITE_COMPLETE ou CHANNEL_EVENT_WRITE_CANCELLED enquanto está processando o evento CHANNEL_EVENT_DATA_RECEIVED . Observe que essa função não será chamada com o mesmo tipo de evento que está sendo processado no momento.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows Vista
Servidor mínimo com suporte Windows Server 2008
Plataforma de Destino Windows
Cabeçalho cchannel.h

Confira também

VirtualChannelOpen