Freigeben über


RpcServerRegisterIf3-Funktion (rpcdce.h)

Die RpcServerRegisterIf3-Funktion registriert eine Schnittstelle bei der RPC-Laufzeitbibliothek.

Syntax

RPC_STATUS RpcServerRegisterIf3(
  [in]           RPC_IF_HANDLE      IfSpec,
  [in, optional] UUID               *MgrTypeUuid,
  [in, optional] RPC_MGR_EPV        *MgrEpv,
  [in]           unsigned int       Flags,
  [in]           unsigned int       MaxCalls,
  [in]           unsigned int       MaxRpcSize,
  [in, optional] RPC_IF_CALLBACK_FN *IfCallback,
  [in, optional] void               *SecurityDescriptor
);

Parameter

[in] IfSpec

VON MIDL generierte Struktur, die die zu registrierende Schnittstelle angibt.

[in, optional] MgrTypeUuid

Zeiger auf eine Typ-UUID , die dem MgrEpv-Parameter zugeordnet werden soll. Wenn Sie einen NULL-Parameterwert (oder eine Null-UUID) angeben, wird IfSpec mit einer UUID vom Typ nil registriert.

[in, optional] MgrEpv

Einstiegspunktvektor (EPV) von Managerroutinen. Um das von MIDL generierte Standard-EPV zu verwenden, geben Sie einen NULL-Wert an. Weitere Informationen finden Sie unter RPC_MGR_EPV.

[in] Flags

Flaggen. Eine Liste der Flagwerte finden Sie unter Schnittstellenregistrierungsflags.

[in] MaxCalls

Maximale Anzahl gleichzeitiger Remoteprozeduraufrufanforderungen, die der Server auf einer Schnittstelle für automatisches Lauschen akzeptieren kann. Der MaxCalls-Parameter gilt nur für eine Schnittstelle für automatisches Lauschen und wird für Schnittstellen ignoriert, die nicht automatisch lauschen. Die RPC-Laufzeitbibliothek bemüht sich nach besten Kräften, sicherzustellen, dass der Server nicht mehr gleichzeitige Anrufanforderungen zulässt als die in MaxCalls angegebene Anzahl von Anrufen. Die tatsächliche Zahl kann größer sein und je nach Protokollsequenz variieren.

Aufrufe auf anderen Schnittstellen werden durch den Wert des prozessweiten MaxCalls-Parameters gesteuert, der im RpcServerListen-Funktionsaufruf angegeben ist.

Wenn die Anzahl gleichzeitiger Aufrufe kein Problem ist, können Sie eine etwas bessere serverseitige Leistung erzielen, indem Sie den Standardwert mithilfe von RPC_C_LISTEN_MAX_CALLS_DEFAULT angeben. Dadurch wird die RPC-Laufzeitumgebung davon befreit, eine unnötige Einschränkung zu erzwingen.

[in] MaxRpcSize

Maximale Größe der eingehenden Datenblöcke in Bytes. Dieser Parameter kann verwendet werden, um böswillige Denial-of-Service-Angriffe zu verhindern. Wenn der Datenblock eines Remoteprozeduraufrufs größer als MaxRpcSize ist, lehnt die RPC-Laufzeitbibliothek den Aufruf ab und sendet einen RPC_S_ACCESS_DENIED Fehler an den Client. Durch Angabe des Werts (unsigned int) –1 für diesen Parameter wird der Grenzwert für die Größe eingehender Datenblöcke entfernt. Dieser Parameter hat keine Auswirkungen auf Aufrufe, die über das ncalrpc-Protokoll ausgeführt werden.

[in, optional] IfCallback

Sicherheitsrückruffunktion oder NULL für keinen Rückruf. Jede registrierte Schnittstelle kann über eine andere Rückruffunktion verfügen. Weitere Informationen finden Sie in den Hinweisen zu RpcServerRegisterIf2.

[in, optional] SecurityDescriptor

Sicherheitsbeschreibung für den Zugriff auf die RPC-Schnittstelle. Jede registrierte Schnittstelle kann einen anderen Sicherheitsdeskriptor aufweisen.

Rückgabewert

Gibt bei Erfolg RPC_S_OK zurück.

Hinweis Eine Liste der gültigen Fehlercodes finden Sie unter RPC-Rückgabewerte.
 

Hinweise

Die Parameter und Auswirkungen der RpcServerRegisterIf3-Funktion erweitern die der RpcServerRegisterIf2-Funktion . Der Unterschied besteht in der Möglichkeit, einen Sicherheitsdeskriptor zum Steuern des Zugriffs auf die registrierte RPC-Schnittstelle anzugeben.

Wenn sowohl SecurityDescriptor als auch IfCallbackFn angegeben sind, wird zuerst der Sicherheitsdeskriptor in SecurityDescriptor überprüft, und der Rückruf in IfCallbackFn wird aufgerufen, nachdem die Zugriffsüberprüfung für den Sicherheitsdeskriptor bestanden wurde.

Beim Aufrufen von RpcServerRegisterIf3 mit securityDescriptor, der auf NULL festgelegt ist, oder beim Aufrufen von RpcServerRegisterIf, RpcServerRegisterIf2 oder RpcServerRegisterIfEx zum Registrieren einer Schnittstelle wird ein Standardsicherheitsdeskriptor verwendet. Der Standardsicherheitsdeskriptor lässt den Zugriff von einem AppContainer-Prozess auf die Schnittstelle nicht zu, wenn der RPC-Server kein AppContainer-Prozess ist. Der Standardsicherheitsdeskriptor lässt keinen Zugriff von einem Prozess in anderen AppContainer-Prozessen auf die Schnittstelle zu, wenn der RPC-Server ein AppContainer-Prozess ist. Der Standardsicherheitsdeskriptor ermöglicht den Zugriff von normalen Prozessen, einschließlich Prozessen mit niedriger Integrität.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 8 [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2012 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile rpcdce.h (rpc.h einschließen)
Bibliothek Rpcrt4.lib
DLL Rpcrt4.dll

Weitere Informationen

Registrieren von Schnittstellen

RpcGetAuthorizationContextForClient

RpcServerRegisterWenn

RpcServerRegisterIf2

RpcServerRegisterIfEx

RpcServerUnregisterIf

RpcServerUnregisterIfEx