Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O cliente de um aplicativo de canais virtuais é uma DLL que é carregada durante a inicialização dos Serviços de Área de Trabalho Remota no computador cliente. A DLL deve ser registrada no computador cliente. Para obter mais informações, consulte de Registro de Cliente do Canal Virtual.
A DLL do cliente deve exportar uma função VirtualChannelEntry, que os Serviços de Área de Trabalho Remota chamam durante a inicialização. O ponto de entrada VirtualChannelEntry recebe um ponteiro para uma estrutura de CHANNEL_ENTRY_POINTS. Essa estrutura contém ponteiros para as funções que a DLL do cliente chama para acessar canais virtuais.
Função | Descrição |
---|---|
VirtualChannelInit |
Registra os nomes dos canais virtuais a serem usados pelo cliente e fornece um virtualChannelInitEvent função de retorno de chamada por meio da qual os Serviços de Área de Trabalho Remota notificam o cliente sobre eventos que afetam a conexão do cliente. |
VirtualChannelOpen |
Abre o final do cliente de um canal virtual especificado e fornece uma função de retorno de chamada VirtualChannelOpenE vent por meio da qual os Serviços de Área de Trabalho Remota notificam o cliente sobre eventos que afetam o canal virtual. |
VirtualChannelWrite |
Grava dados em um canal virtual. Os Serviços de Área de Trabalho Remota enviam esses dados para o final do servidor do canal virtual. O final do servidor chama a função WTSVirtualChannelRead para ler os dados. |
VirtualChannelClose |
Fecha um canal virtual. |
A funçãoVirtualChannelEntry da DLL deve chamar a função VirtualChannelInit para inicializar o acesso aos canais virtuais. Ao chamar VirtualChannelInit, você deve passar um ponteiro para a função de retorno de chamada VirtualChannelInitEvent. Os Serviços de Área de Trabalho Remota chamam essa função de retorno de chamada quando a inicialização é concluída e novamente quando uma conexão é estabelecida com um servidor host de sessão da Área de Trabalho Remota (Host de Sessão rd).
Depois que a conexão for estabelecida, você poderá chamar a função VirtualChannelOpen para abrir os canais virtuais registrados pela chamada VirtualChannelInit. A chamada VirtualChannelOpen especifica um ponteiro para a função de retorno de chamadaVirtualChannelOpenEvent.
Depois que a chamadaVirtualChannelOpen for retornada, você poderá chamar a funçãoVirtualChannelWrite para gravar no canal virtual. A operação de gravação é assíncrona, portanto, você não deve liberar ou reutilizar o buffer passado para VirtualChannelWrite até que os Serviços de Área de Trabalho Remota chamem sua função VirtualChannelOpenEvent para indicar que a operação de gravação foi concluída. Ao chamar VirtualChannelWrite, você pode passar um pedaço de dados do usuário que identifica a operação de gravação. Os Serviços de Área de Trabalho Remota transmitem esses dados do usuário de volta quando ele chama VirtualChannelOpenEvent para notificá-lo de que a operação foi concluída. No final do servidor do canal virtual, o suplemento do servidor chama a função WTSVirtualChannelRead para ler os dados.
Os Serviços de Área de Trabalho Remota também chamam sua função VirtualChannelOpenEvent quando os dados são gravados no canal virtual pelo módulo do servidor. O módulo do servidor chama a função WTSVirtualChannelWrite para gravar dados no final do servidor do canal virtual.
Os módulos cliente e servidor podem gravar blocos de dados de qualquer tamanho no canal virtual. No entanto, antes de enviar os dados, os Serviços de Área de Trabalho Remota segmentam os dados em partes de CHANNEL_CHUNK_LENGTH bytes. Os Serviços de Área de Trabalho Remota chamam sua função VirtualChannelOpenEvent uma vez para cada parte dos dados, em vez de recompilar os dados em um bloco do tamanho original. Cada chamada para VirtualChannelOpenEvent indica o tamanho da parte, o tamanho total gravado pelo servidor e se os dados constituem o início, o meio ou o fim de um bloco gravado pelo servidor.
Você pode chamar a função VirtualChannelClose para fechar um canal. No entanto, não é necessário chamá-lo porque os Serviços de Área de Trabalho Remota fecham todos os canais automaticamente quando o cliente se desconecta do servidor.