RpcNsBindingExportA-Funktion (rpcnsi.h)

Die RpcNsBindingExport-Funktion erstellt einen Namensdienst-Datenbankeintrag mit mehreren Bindungshandles und mehreren Objekten für einen Server.

Hinweis Diese Funktion wird unter Windows Vista und höheren Betriebssystemen nicht unterstützt.
 

Syntax

RPC_STATUS RpcNsBindingExportA(
  unsigned long      EntryNameSyntax,
  RPC_CSTR           EntryName,
  RPC_IF_HANDLE      IfSpec,
  RPC_BINDING_VECTOR *BindingVec,
  UUID_VECTOR        *ObjectUuidVec
);

Parameter

EntryNameSyntax

Syntax von EntryName.

Um die im Registrierungswerteintrag HKEY_LOCAL_MACHINE\Software\Microsoft\Rpc\NameService\DefaultSyntaxangegebene Syntax zu verwenden, geben Sie den Wert RPC_C_NS_SYNTAX_DEFAULT an.

EntryName

Zeiger auf den Eintragsnamen, in den Bindungshandles und Objekt-UUIDs exportiert werden. Sie können keine NULL- oder leere Zeichenfolge angeben. Der Client und der Server müssen beide denselben Eintragsnamen verwenden.

IfSpec

Stub-generierte Datenstruktur, die die zu exportierende Schnittstelle angibt. Ein NULL-Wert gibt an, dass keine Bindungshandles zu exportieren sind (nur Objekt-UUIDs müssen exportiert werden), und BindingVec wird ignoriert.

BindingVec

Zeiger auf zu exportierende Serverbindungen. Ein NULL-Wert gibt an, dass keine Bindungshandles zu exportieren sind (nur Objekt-UUIDs müssen exportiert werden).

ObjectUuidVec

Zeiger auf einen Vektor von Objekt-UUIDs, die vom Server angeboten werden. Die Serveranwendung erstellt diesen Vektor. Ein NULL-Wert gibt an, dass keine Objekt-UUIDs zu exportieren sind (nur Bindungshandles müssen exportiert werden).

Rückgabewert

Wert Bedeutung
RPC_S_OK
Der Aufruf war erfolgreich.
RPC_S_NOTHING_TO_EXPORT
Es gab nichts zu exportieren.
RPC_S_INVALID_BINDING
Das Bindungshandle war ungültig.
RPC_S_WRONG_KIND_OF_BINDING
Dies war die falsche Art der Bindung für den Vorgang.
RPC_S_INVALID_NAME_SYNTAX
Die Namenssyntax ist ungültig.
RPC_S_UNSUPPORTED_NAME_SYNTAX
Die Namenssyntax wird nicht unterstützt.
RPC_S_INCOMPLETE_NAME
Der Name ist unvollständig.
RPC_S_NO_NS_PRIVILEGE
Keine Berechtigung für Name-Service-Vorgänge.
RPC_S_NAME_SERVICE_UNAVAILABLE
Der Namensdienst ist nicht verfügbar.
 
Hinweis Eine Liste der gültigen Fehlercodes finden Sie unter RPC-Rückgabewerte.
 

Hinweise

Die RpcNsBindingExport-Funktion ermöglicht es einer Serveranwendung, öffentlich eine Schnittstelle in der Name-Dienst-Datenbank zur Verwendung durch jede Clientanwendung anzubieten.

Ab Windows 2000 verwendet die RPC-Laufzeitumgebung active Directory als Namensdienstdatenbank. Dies bedeutet, dass autorisierte exportierte Einträge im Namensdienst beibehalten werden und auch nach dem Neustart sichtbar sind. Nicht autorisierte Exporte werden nicht beibehalten. Weitere Informationen zu Autorisierungs- und Access Control listen finden Sie unter Access Control im Abschnitt Sicherheit des Platform Software Development Kit (SDK).

Zum Exportieren einer Schnittstelle ruft die Serveranwendung die RpcNsBindingExport-Routine mit einer Schnittstelle auf, und die Serverbindung verarbeitet einen Client für den Zugriff auf den Server. Eine Serveranwendung ruft auch die RpcNsBindingExport-Funktion auf, um die Objekt-UUID(s) der Ressourcen öffentlich anzubieten, die(n) in der Name-Service-Datenbank bereitgestellt werden, sofern vorhanden.

Ein Server kann Schnittstellen und Objekte in einem einzigen Aufruf von RpcNsBindingExport exportieren oder separat exportieren. Wenn der durch EntryName angegebene Name-Dienst-Datenbankeintrag nicht vorhanden ist, versucht RpcNsBindingExport , ihn zu erstellen. In diesem Fall muss die Serveranwendung über die Berechtigung zum Erstellen des Eintrags verfügen. Zusätzlich zum Aufrufen von RpcNsBindingExport muss sich ein Server, der die Funktion RpcServerUseAllProtseqs oder RpcServerUseProtseq aufgerufen hat, auch bei der lokalen datenbank endpoint-map registrieren, indem entweder RpcEpRegister oder RpcEpRegisterNoReplace aufgerufen wird.

Ein Server muss keine seiner Schnittstellen in die Name-Dienst-Datenbank exportieren. Wenn ein Server nicht exportiert wird, können nur Clients, die die Bindungsinformationen des Servers privat kennen, auf seine Schnittstellen zugreifen. Beispielsweise kann ein Client, der über die zum Erstellen einer Zeichenfolgenbindung erforderlichen Informationen verfügt, rpcBindingFromStringBinding aufrufen, um ein Bindungshandle für Remoteprozeduraufrufe an einen Server zu erstellen.

Vor dem Aufrufen von RpcNsBindingExport muss ein Server folgendes tun:

Der von der RpcServerInqBindings-Funktion zurückgegebene Vektor wird zum Binding-Parameter für RpcNsBindingExport. Um zu verhindern, dass eine Bindung exportiert wird, legen Sie das ausgewählte Vektorelement auf einen NULL-Wert fest.

Wenn ein Server mehrmals in den gleichen Name-Dienst-Datenbankeintrag exportiert, fügen die zweiten und nachfolgenden Aufrufe von RpcNsBindingExport die Bindungsinformationen und Objekt-UUIDs hinzu, wenn sich diese Daten von den Bindungsinformationen unterscheiden, die bereits im Servereintrag enthalten sind. Vorhandene Daten werden nicht aus dem Eintrag entfernt.

Um Bindungshandles und Objekt-UUIDs aus der Name-Dienst-Datenbank zu entfernen, ruft eine Serveranwendung die Funktion RpcNsBindingUnexport auf.

Ein Servereintrag muss über mindestens ein Bindungshandle verfügen, um vorhanden zu sein. Daher hat das Exportieren nur von UUIDs in einen nicht vorhandenen Eintrag keine Auswirkung, und das Aufheben des Exports aller Bindungshandles löscht den Eintrag.

Hinweis

Der rpcnsi.h-Header definiert RpcNsBindingExport 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

   
Unterstützte Mindestversion (Client) Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile rpcnsi.h (rpc.h einschließen)
Bibliothek Rpcns4.lib
DLL Rpcns4.dll

Weitere Informationen

RpcBindingFromStringBinding

RpcEpRegister

RpcEpRegisterNoReplace

RpcNsBindingUnexport

RpcServerInqBindings

RpcServerUseAllProtseqs

RpcServerUseAllProtseqsIf

RpcServerUseProtseq

RpcServerUseProtseqEp

RpcServerUseProtseqIf