Freigeben über


CHANNEL_OPEN_EVENT_FN Rückruffunktion (cchannel.h)

Eine anwendungsdefinierte Rückruffunktion, die remotedesktopdienste aufruft, um die Client-DLL über Ereignisse für einen bestimmten virtuellen Kanal zu benachrichtigen.

Der PCHANNEL_OPEN_EVENT_FN Typ definiert einen Zeiger auf diese Rückruffunktion. VirtualChannelOpenEvent ist ein Platzhalter für den anwendungsdefinierte oder bibliotheksdefinierte Funktionsnamen.

Syntax

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

Parameter

[in] openHandle

Handle für den virtuellen Kanal. Dies ist das Handle, das im pOpenHandle-Parameter der VirtualChannelOpen-Funktion zurückgegeben wird.

[in] event

Gibt das Ereignis an, das die Benachrichtigung verursacht hat. Dieser Parameter kann einen der folgenden Werte annehmen.

CHANNEL_EVENT_DATA_RECEIVED

Der virtuelle Kanal, der daten vom Server empfangen hat, endet. pData ist ein Zeiger auf einen Datenblock. dataLength gibt die Größe dieses Blocks an. totalLength gibt die Gesamtgröße der vom Server geschriebenen Daten an.

CHANNEL_EVENT_WRITE_CANCELLED

Ein Schreibvorgang, der von einem VirtualChannelWrite-Aufruf gestartet wurde, wurde abgebrochen. pData ist der Wert, der im pUserData-Parameter von VirtualChannelWrite angegeben ist.

Ein Schreibvorgang wird abgebrochen, wenn die Clientsitzung getrennt wird. Mit dieser Benachrichtigung können Sie den mit dem Schreibvorgang verbundenen Arbeitsspeicher freigeben.

CHANNEL_EVENT_WRITE_COMPLETE

Ein Schreibvorgang, der von einem VirtualChannelWrite-Aufruf gestartet wurde, wurde abgeschlossen. pData ist der Wert, der im pUserData-Parameter von VirtualChannelWrite angegeben ist.

[in] pData

Zeiger auf zusätzliche Daten für das Ereignis. Der Typ der Daten hängt vom Ereignis ab, wie zuvor in den Ereignisbeschreibungen beschrieben.

Wenn das EreignisCHANNEL_EVENT_DATA_RECEIVED ist, werden die vom Server geschriebenen Daten in Blöcke von nicht mehr als CHANNEL_CHUNK_LENGTH Bytes unterteilt. Der dataFlags-Parameter gibt an, ob sich der aktuelle Block am Anfang, in der Mitte oder am Ende des vom Server geschriebenen Datenblocks befindet.

Beachten Sie, dass die Größe dieses Parameters größer sein kann als der im dataLength-Parameter angegebene Wert. Die Anwendung sollte nur die anzahl der by dataLength angegebenen Bytes lesen.

[in] dataLength

Gibt die Größe der Daten im pData-Puffer in Bytes an.

[in] totalLength

Gibt die Gesamtgröße der Daten in Bytes an, die von einem einzelnen Schreibvorgang an das Serverende des virtuellen Kanals geschrieben werden.

[in] dataFlags

Stellt Informationen zum Datenblock bereit, der in einem CHANNEL_EVENT_DATA_RECEIVED-Ereignis empfangen wird. Die folgenden Bitflags werden festgelegt.

Beachten Sie, dass Sie keine direkten Vergleiche mit dem Operator "==" durchführen sollten, wenn Sie die Werte in der folgenden Liste vergleichen. Verwenden Sie stattdessen die beschriebenen Vergleichsmethoden.

CHANNEL_FLAG_FIRST

Der Block ist der Anfang der Daten, die von einem einzelnen Schreibvorgang geschrieben werden.

Verwenden Sie bitweise Vergleiche, wenn Sie dieses Flag vergleichen.

CHANNEL_FLAG_LAST

Der Block ist das Ende der Daten, die von einem einzelnen Schreibvorgang geschrieben werden.

Verwenden Sie bitweise Vergleiche, wenn Sie dieses Flag vergleichen.

CHANNEL_FLAG_MIDDLE

Dies ist die Standardoption. Der Block befindet sich in der Mitte eines Datenblocks, der von einem einzelnen Schreibvorgang geschrieben wird.

Verwenden Sie keine bitweisen Vergleiche, um diesen Flagwert direkt zu vergleichen. Verwenden Sie stattdessen bitweise Vergleiche, um zu bestimmen, dass der Flagwert nicht CHANNEL_FLAG_FIRST oder CHANNEL_FLAG_LAST ist. Dies erfolgt mithilfe des folgenden Vergleichs: Result = !(flags & CHANNEL_FLAG_FIRST) && !(flags & CHANNEL_FLAG_LAST).

CHANNEL_FLAG_ONLY

Kombiniert die CHANNEL_FLAG_FIRST - und CHANNEL_FLAG_LAST-Werte . Der Block enthält alle Daten aus einem einzelnen Schreibvorgang.

Verwenden Sie bitweise Vergleiche, wenn Sie dieses Flag vergleichen.

Rückgabewert

Diese Funktion verfügt über keine Rückgabewerte.

Hinweise

Die Client-DLL verwendet die VirtualChannelOpen-Funktion , um eine VirtualChannelOpenEvent-Funktion für einen bestimmten virtuellen Kanal zu registrieren.

Sie können dieselbe VirtualChannelOpenEvent-Funktion für mehrere Aufrufe von VirtualChannelOpen verwenden.

Diese Funktion kann während der Ausführung mit einem anderen Ereignistyp aufgerufen werden. Es kann beispielsweise mit CHANNEL_EVENT_WRITE_COMPLETE oder CHANNEL_EVENT_WRITE_CANCELLED aufgerufen werden, während das CHANNEL_EVENT_DATA_RECEIVED-Ereignis verarbeitet wird. Beachten Sie, dass diese Funktion nicht mit demselben Ereignistyp aufgerufen wird, den sie gerade verarbeitet.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows Vista
Unterstützte Mindestversion (Server) Windows Server 2008
Zielplattform Windows
Kopfzeile cchannel.h

Weitere Informationen

VirtualChannelOpen