Mein Programm verwendet Microsoft RPC für die Interprozesskommunikation. RPC ruft das Programm zur Vorbereitung für den Empfang läuft die folgende Sequenz:"Endpunkt ist ein Duplikat" beim Starten eines RPC-Servers
RpcServerUseProtseqEp(), dann
RpcServerRegisterIf(), dann
RpcServerListen()
Das Programm startet seinen RPC-Server mit der obigen Sequenz, arbeitet für einige Zeit, wird dann beendet und kann später von einem anderen Programm neu gestartet werden. Die Menge der Parameterwerte für RpcServerUseProtseqEp() ist bei jedem Ausführen des Programms gleich.
Wenn die Sequenz das erste Mal nach dem Neustart ausgeführt wird, ist es immer erfolgreich, aber bei nachfolgenden Ausführungen gibt RpcServerUseProtseqEp() RPC_S_DUPLICATE_ENDPOINT zurück ("Der Endpunkt ist ein Duplikat.") Ich ignoriere gerade diesen bestimmten Fehlercode und behandle ihn als Erfolg , dann funktionieren normalerweise alle anderen Primitiven gut.
Was ist die korrekte Art der Verwendung von RpcServerUseProtseqEp()? Soll ich den registrierten Endpunkt bereinigen oder den Fehlercode RPC_S_DUPLICATE_ENDPOINT ignorieren?
Versucht, RpcServerInqBindings() aufzurufen, dann RpcEpUnregister(). Ersteres ist erfolgreich, letzteres gibt "der Server-Endpunkt konnte die Operation nicht ausführen" zurück. – sharptooth