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 |