Condividi tramite


CHANNEL_OPEN_EVENT_FN funzione di callback (cchannel.h)

Funzione di callback definita dall'applicazione che Servizi Desktop remoto chiama per inviare una notifica alla DLL client di eventi per un canale virtuale specifico.

Il tipo PCHANNEL_OPEN_EVENT_FN definisce un puntatore a questa funzione di callback. VirtualChannelOpenEvent è un segnaposto per il nome di funzione definito dall'applicazione o dalla libreria.

Sintassi

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
)
{...}

Parametri

[in] openHandle

Gestire il canale virtuale. Questo è l'handle restituito nel parametro pOpenHandle della funzione VirtualChannelOpen .

[in] event

Indica l'evento che ha causato la notifica. Questo parametro può avere uno dei valori seguenti.

CHANNEL_EVENT_DATA_RECEIVED

Il canale virtuale ha ricevuto dati dalla fine del server. pData è un puntatore a un blocco dei dati. dataLength indica le dimensioni di questo blocco. totalLength indica la dimensione totale dei dati scritti dal server.

CHANNEL_EVENT_WRITE_CANCELLED

È stata annullata un'operazione di scrittura avviata da una chiamata VirtualChannelWrite . pData è il valore specificato nel parametro pUserData di VirtualChannelWrite.

Un'operazione di scrittura viene annullata quando la sessione client viene disconnessa. Questa notifica consente di liberare qualsiasi memoria associata all'operazione di scrittura.

CHANNEL_EVENT_WRITE_COMPLETE

È stata completata un'operazione di scrittura avviata da una chiamata VirtualChannelWrite . pData è il valore specificato nel parametro pUserData di VirtualChannelWrite.

[in] pData

Puntatore a dati aggiuntivi per l'evento. Il tipo di dati dipende dall'evento, come descritto in precedenza nelle descrizioni degli eventi.

Se l'evento è CHANNEL_EVENT_DATA_RECEIVED, i dati scritti dal server vengono suddivisi in blocchi di non più di CHANNEL_CHUNK_LENGTH byte. Il parametro dataFlags indica se il blocco corrente si trova all'inizio, al centro o alla fine del blocco di dati scritto dal server.

Si noti che le dimensioni di questo parametro possono essere maggiori del valore specificato dal parametro dataLength . L'applicazione deve leggere solo il numero di byte specificati da dataLength.

[in] dataLength

Specifica le dimensioni, in byte, dei dati nel buffer pData .

[in] totalLength

Specifica le dimensioni totali, in byte, dei dati scritti da un'unica operazione di scrittura alla fine del server del canale virtuale.

[in] dataFlags

Fornisce informazioni sul blocco dei dati ricevuti in un evento CHANNEL_EVENT_DATA_RECEIVED . Verranno impostati i flag di bit seguenti.

Si noti che non è consigliabile effettuare confronti diretti usando l'operatore '==' quando si confrontano i valori nell'elenco seguente; Usare invece i metodi di confronto descritti.

CHANNEL_FLAG_FIRST

Il blocco è l'inizio dei dati scritti da un'unica operazione di scrittura.

Usare confronti bit per bit durante il confronto di questo flag.

CHANNEL_FLAG_LAST

Il blocco è la fine dei dati scritti da un'unica operazione di scrittura.

Usare confronti bit per bit durante il confronto di questo flag.

CHANNEL_FLAG_MIDDLE

Questo è il valore predefinito. Il blocco si trova al centro di un blocco di dati scritto da una singola operazione di scrittura.

Non usare confronti bit per bit per confrontare direttamente questo valore di flag. Usare invece confronti bit per bit per determinare che il valore del flag non è CHANNEL_FLAG_FIRST o CHANNEL_FLAG_LAST. Questa operazione viene eseguita usando il confronto seguente: Result = !(flags & CHANNEL_FLAG_FIRST) && !(flags & CHANNEL_FLAG_LAST).

CHANNEL_FLAG_ONLY

Combina i valori CHANNEL_FLAG_FIRST e CHANNEL_FLAG_LAST . Il blocco contiene tutti i dati di una singola operazione di scrittura.

Usare confronti bit per bit durante il confronto di questo flag.

Valore restituito

Questa funzione non ha valori restituiti.

Commenti

La DLL client usa la funzione VirtualChannelOpen per registrare una funzione VirtualChannelOpenEvent per un canale virtuale specifico.

È possibile usare la stessa funzione VirtualChannelOpenEvent per più chiamate a VirtualChannelOpen.

Questa funzione può essere chiamata con un tipo di evento diverso durante l'esecuzione. Ad esempio, può essere chiamato con CHANNEL_EVENT_WRITE_COMPLETE o CHANNEL_EVENT_WRITE_CANCELLED durante l'elaborazione dell'evento CHANNEL_EVENT_DATA_RECEIVED . Si noti che questa funzione non verrà chiamata con lo stesso tipo di evento attualmente in fase di elaborazione.

Requisiti

Requisito Valore
Client minimo supportato Windows Vista
Server minimo supportato Windows Server 2008
Piattaforma di destinazione Windows
Intestazione cchannel.h

Vedi anche

VirtualChannelOpen