Funzione RpcServerRegisterIf3 (rpcdce.h)
La funzione RpcServerRegisterIf3 registra un'interfaccia con la libreria di runtime RPC.
Sintassi
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
);
Parametri
[in] IfSpec
Struttura generata da MIDL che indica l'interfaccia da registrare.
[in, optional] MgrTypeUuid
Puntatore a un tipo UUID da associare al parametro MgrEpv . Specificando un valore di parametro Null (o un UUID nil) registra IfSpec con un UUID di tipo nil.
[in, optional] MgrEpv
Vettore del punto di ingresso (EPV) della routine di Gestione. Per usare l'EPV predefinito generato da MIDL, specificare un valore Null . Per altre informazioni, vedere RPC_MGR_EPV.
[in] Flags
Bandiere. Per un elenco di valori di flag, vedere Flag di registrazione interfaccia.
[in] MaxCalls
Numero massimo di richieste di chiamata alla procedura remota simultanee che il server può accettare in un'interfaccia di ascolto automatico . Il parametro MaxCalls è applicabile solo in un'interfaccia di ascolto automatico e viene ignorato nelle interfacce che non sono in ascolto automatico. La libreria di runtime RPC rende il suo miglior sforzo per garantire che il server non consenta richieste di chiamata simultanee rispetto al numero di chiamate specificate in MaxCalls. Il numero effettivo può essere maggiore e può variare per ogni sequenza di protocolli.
Le chiamate su altre interfacce sono regolate dal valore del parametro MaxCalls a livello di processo specificato nella chiamata di funzione RpcServerListen .
Se il numero di chiamate simultanee non è un problema, è possibile ottenere prestazioni lato server leggermente migliori specificando il valore predefinito usando RPC_C_LISTEN_MAX_CALLS_DEFAULT. In questo modo, l'ambiente di runtime RPC consente di applicare una restrizione non necessaria.
[in] MaxRpcSize
Dimensioni massime dei blocchi di dati in ingresso, in byte. Questo parametro può essere usato per impedire attacchi denial-of-service dannosi. Se il blocco dati di una chiamata di routine remota è maggiore di MaxRpcSize, la libreria di runtime RPC rifiuta la chiamata e invia un errore di RPC_S_ACCESS_DENIED al client. Specificando un valore di (senza segno int) -1 per questo parametro rimuove il limite per le dimensioni dei blocchi di dati in ingresso. Questo parametro non ha alcun effetto sulle chiamate effettuate sul protocollo ncalrpc .
[in, optional] IfCallback
Funzione di callback di sicurezza o NULL per nessun callback. Ogni interfaccia registrata può avere una funzione di callback diversa. Vedere le osservazioni in RpcServerRegisterIf2.
[in, optional] SecurityDescriptor
Descrittore di sicurezza per l'accesso all'interfaccia RPC. Ogni interfaccia registrata può avere un descrittore di sicurezza diverso.
Valore restituito
Restituisce RPC_S_OK al termine dell'esito positivo.
Commenti
I parametri e gli effetti della funzione RpcServerRegisterIf3 estendono quelli della funzione RpcServerRegisterIf2 . La differenza è la possibilità di specificare un descrittore di sicurezza per controllare l'accesso all'interfaccia RPC registrata.
Se vengono specificati sia SecurityDescriptor che IfCallbackFn , il descrittore di sicurezza in SecurityDescriptor verrà controllato prima e il callback in IfCallbackFn verrà chiamato dopo il controllo di accesso rispetto al descrittore di sicurezza.
Quando si chiama RpcServerRegisterIf3 con SecurityDescriptor impostato su NULL o chiamando RpcServerRegisterIf, RpcServerRegisterIf2 o RpcServerRegisterIfEx per registrare un'interfaccia, verrà usato un descrittore di sicurezza predefinito. Il descrittore di sicurezza predefinito non consente l'accesso da alcun processo AppContainer all'interfaccia se il server RPC non è un processo AppContainer. Il descrittore di sicurezza predefinito non consente l'accesso da alcun processo in altri processi AppContainer all'interfaccia se il server RPC è un processo AppContainer. Il descrittore di sicurezza predefinito consentirà l'accesso dai processi normali, inclusi i processi di integrità bassa.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 8 [solo app desktop] |
Server minimo supportato | Windows Server 2012 [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | rpcdce.h (include Rpc.h) |
Libreria | Rpcrt4.lib |
DLL | Rpcrt4.dll |