Startsequenz

Um Ihren Protokollanbieter zu starten, verwenden Sie den Remotedesktopdienste-Dienst:

  • Ruft den Namen des Listeners und die CLSID Ihres Protokoll-Manager-Objekts (IWRdsProtocolManager) aus der Registrierung ab. Weitere Informationen finden Sie unter Registrieren des Protokoll-Managers.
  • Ruft Initialize auf, um den Protokoll-Manager zu initialisieren.
  • Erstellt ein Protokoll-Manager-Objekt mithilfe der CLSID. Selbst wenn mehrere Listener für denselben Protokollanbieter registriert sind, erstellt der Dienst nur ein Protokoll-Manager-Objekt.
  • Ruft CreateListener auf, um das Protokoll-Manager-Objekt anzuweisen, ein IWRdsProtocolListener-Listenerobjekt zu erstellen und es an den Dienst zurückzugeben. Das Protokoll-Manager-Objekt muss einen Verweis auf das Listenerobjekt hinzufügen, bevor es an den Dienst zurückgegeben wird. Der Dienst gibt das Objekt frei, wenn der Dienst beendet oder der Listener gelöscht wird.
  • Ruft StartListen für das Listenerobjekt auf, damit der Listener mit dem Lauschen auf eingehende Verbindungen beginnen kann.
  • Ruft StopListen auf, um zu verhindern, dass das Listenerobjekt lauscht.
  • Ruft Uninitialize auf, um die Initialisierung des Protokoll-Managers zu aufheben.

Der Listener erstellt ein IWRdsProtocolConnection-Objekt, wenn ein Client versucht, eine Verbindung herzustellen. Das Listenerobjekt ruft OnConnected auf, um den Remotedesktopdienste Dienst zu benachrichtigen, dass ein neuer Client versucht, eine Verbindung herzustellen oder erneut eine Verbindung herzustellen, und übergibt das IWRdsProtocolConnection-Objekt in diesem Aufruf. Der Remotedesktopdienste Dienst gibt wiederum ein IWRdsProtocolConnectionCallback-Objekt in diesem Aufruf zurück, damit das Protokoll bei Bedarf mit dem Remotedesktopdienste Dienst kommunizieren kann. Der Dienst fügt vor der Rückgabe einen Verweis auf das Rückrufobjekt hinzu, und das Protokoll muss diesen Verweis freigeben, wenn die Verbindung geschlossen wird.

Die folgende Abbildung zeigt die Interaktion zwischen den verschiedenen Objekten während des Starts.

rcm-Startsequenz

Methodenaufrufsequenz

Verbindungssequenz