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.
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