RpcEpRegisterNoReplaceA-Funktion (rpcdce.h)
Die RpcEpRegisterNoReplace-Funktion fügt der lokalen Endpunktzuordnungsdatenbank Serveradresseninformationen hinzu.
Syntax
RPC_STATUS RpcEpRegisterNoReplaceA(
RPC_IF_HANDLE IfSpec,
RPC_BINDING_VECTOR *BindingVector,
UUID_VECTOR *UuidVector,
RPC_CSTR Annotation
);
Parameter
IfSpec
Schnittstelle zum Registrieren bei der lokalen Endpunktzuordnungsdatenbank.
BindingVector
Zeiger auf einen Vektor von Bindungshandles, über die der Server Remoteprozeduraufrufe empfangen kann.
UuidVector
Zeiger auf einen Vektor von Objekt-UUIDs, die vom Server angeboten werden. Die Serveranwendung erstellt diesen Vektor.
Ein NULL-Parameterwert gibt an, dass keine Objekt-UUIDs registriert werden müssen.
Annotation
Zeiger auf den Zeichenfolgenkommentar, der auf jedes produktübergreifende Element angewendet wird, das der lokalen Endpunktzuordnungsdatenbank hinzugefügt wird. Die Zeichenfolge kann bis zu 64 Zeichen lang sein, einschließlich des NULL-Endzeichens. Geben Sie einen NULL-Wert oder eine null-endende Zeichenfolge ("\0") an, wenn keine Anmerkungszeichenfolge vorhanden ist.
Die Anmerkungszeichenfolge wird von Anwendungen nur für Informationen verwendet. RPC verwendet diese Zeichenfolge nicht, um zu bestimmen, welcher Server instance ein Client mit oder um Elemente in der endpoint-map-Datenbank aufzulisten.
Rückgabewert
Wert | Bedeutung |
---|---|
|
Der Aufruf war erfolgreich. |
|
Keine Bindungen. |
|
Das Bindungshandle war ungültig. |
|
Dies war die falsche Art der Bindung für den Vorgang. |
Hinweise
Die RpcEpRegisterNoReplace-Funktion fügt der Endpunktzuordnungsdatenbank des lokalen Hosts Einträge hinzu. Diese Funktion ersetzt keine vorhandenen Datenbankeinträge.
Ein Server verwendet RpcEpRegisterNoReplace anstelle von RpcEpRegister , wenn mehrere Instanzen des Servers auf demselben Host ausgeführt werden. Anders ausgedrückt: Verwenden Sie diese Funktion, wenn mehrere Server instance die gleiche Schnittstellen-UUID, Objekt-UUID und Protokollsequenz gleichzeitig anbieten.
Da Einträge beim Aufrufen von RpcEpRegisterNoReplace nicht ersetzt werden, müssen Server die Registrierung selbst aufheben, bevor sie die Ausführung beenden. Andernfalls werden veraltete Daten jedes Mal angesammelt, wenn die Ausführung eines Servers instance beendet wird, ohne RpcEpUnregister aufzurufen. Veraltete Einträge erhöhen die Wahrscheinlichkeit, dass ein Client Endpunkte an nicht vorhandene Server empfängt. Der Client versucht, mit einem nicht vorhandenen Server zu kommunizieren, bevor er einen anderen Endpunkt erhält.
Ein Server kann RpcEpRegister und RpcEpRegisterNoReplace verwenden, um Einträge in der Endpunktzuordnungsdatenbank zu registrieren. Vor Windows 2000 waren zwei Funktionen verfügbar, mit denen ein Server veraltete Einträge in der Endpunktzuordnungsdatenbank überschreiben kann, die von früheren Serverinstanzen, die nicht mehr ausgeführt werden, übrig geblieben ist. Die Endpunktzuordnungsdatenbank entfernt automatisch Einträge, die von einem Server instance registriert wurden, sobald der Server nicht mehr funktioniert. Server dürfen jedoch aus Sicherheitsgründen nicht die Endpunktzuordnungseinträge eines anderen Servers ersetzen. Daher führen RpcEpRegister und RpcEpRegisterNoReplace weitgehend die gleichen Funktionen aus.
Eine Serveranwendung ruft RpcEpRegister auf, um Endpunkte zu registrieren, die durch Aufrufen einer der folgenden Funktionen angegeben werden:
- RpcServerUseAllProtseqs
- RpcServerUseProtseq
- RpcServerUseProtseqEp
- RpcServerUseAllProtseqsIf
- RpcServerUseProtseqIf
Wenn eine Protokollsequenz ohne Angabe eines Endpunkts verwendet wird, generiert die RPC-Laufzeitbibliothek automatisch einen dynamischen Endpunkt. In diesem Fall kann der Server RpcServerInqBindings gefolgt von RpcEpRegisterNoReplace aufrufen, um sich für mehrere Clients verfügbar zu machen. Andernfalls ist der automatisch gestartete Server nur dem Client bekannt, für den der Server gestartet wurde.
Jedes element, das der endpoint-map-Datenbank hinzugefügt wird, enthält logisch Folgendes:
- Schnittstellen-UUID
- Schnittstellenversion (Hauptversion und Nebenversion)
- Bindungshandle
- Objekt-UUID (optional)
- Anmerkung (optional)
Hinweis
Der rpcdce.h-Header definiert RpcEpRegisterNoReplace als Alias, der die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante automatisch auswählt. Das Mischen der Verwendung des codierungsneutralen Alias mit Code, der nicht Codierungsneutral ist, kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 2000 Professional [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows 2000 Server [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | rpcdce.h (rpc.h einschließen) |
Bibliothek | Rpcrt4.lib |
DLL | Rpcrt4.dll |
Weitere Informationen
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für