Associazione di stringhe

L'associazione di stringhe è una stringa di caratteri senza segno composta da stringhe che rappresentano l'UUID dell'oggetto di associazione, la sequenza di protocollo RPC, l'indirizzo di rete e le opzioni dell'endpoint e dell'endpoint.

ObjectUUID@ProtocolSequence:NetworkAddress[Endpoint,Option]

Parametri

ObjectUUID

UUID dell'oggetto gestito dalla chiamata di procedura remota. Nel server, la libreria di runtime RPC esegue il mapping del tipo di oggetto a un vettore del punto di ingresso del gestore (una matrice di puntatori a funzione) per richiamare la routine di gestione corretta. Per una descrizione di come eseguire il mapping degli UUID degli oggetti ai vettori di punto di ingresso di gestione, vedere Registrazione di interfacce.

ProtocolSequence

Stringa di caratteri che rappresenta una combinazione valida di un protocollo RPC (ad esempio ncacn), un protocollo di trasporto (ad esempio TCP) e un protocollo di rete (ad esempio IP). Microsoft RPC supporta i protocolli seguenti specificati in Costanti della sequenza di protocollo.

NetworkAddress

Indirizzo di rete del sistema per ricevere chiamate di procedura remota.

Nota

Le sequenze di protocollo seguenti non sono supportate a partire da Windows XP:

Il formato e il contenuto dell'indirizzo di rete dipendono dalla sequenza di protocollo specificata come indicato di seguito.

Sequenza di protocollo Indirizzo di rete Esempio
ncacn_nb_tcp Nome computer Myserver
ncacn_nb_ipx Nome computer Myserver
ncacn_nb_nb Nome computer Myserver
Ncacn_ip_tcp Indirizzo Internet a quattro ottet o nome host. Se lo stack di rete IPv6 è installato, IPv6 è completamente supportato e viene accettato anche un indirizzo IPv6. 128.10.2.30 anynode.microsoft.com
ncacn_np Nome del server (le barre rovesciata iniziali sono facoltative) myserver \\myotherserver
ncacn_spx Indirizzo Internet IPX o nome del server ~0000000108002B30612C myserver
ncacn_dnet_nsp Sintassi area e nodo 4.120
ncacn_at_dsp Nome computer, seguito facoltativamente da @ e dal nome della zona AppleTalk. Il valore predefinito è @*, la zona del client, se non è stata specificata alcuna zona servername@zonename nome server
ncacn_vns_spp Nome del server StreetTalk del modulo item@group@organization printserver@sdkdocs@microsoft
ncadg_mq Nome server Myserver
ncacn_http Indirizzo Internet (nome descrittivo o nome descrittivo di quattro ottetto o nome del server locale 128.10.2.30 somesvr@anywhere.com mylocalsvr
ncadg_ip_udp Indirizzo Internet a quattro ottet o nome host 128.10.2.30 anynode.microsoft.com
ncadg_ipx Indirizzo Internet IPX o nome del server ~0000000108002B30612C myserver
ncalrpc Nome computer thismachine

Il campo indirizzo di rete è facoltativo. Quando non si specifica un indirizzo di rete, l'associazione di stringhe fa riferimento all'host locale. È possibile specificare il nome del computer locale quando si usa la sequenza di protocollo ncalrpc , tuttavia questa operazione non è completamente necessaria.

Endpoint

Endpoint, o indirizzo, del processo per ricevere chiamate di procedura remota. Un endpoint può essere preceduto dalla parola chiave endpoint=. Specificare l'endpoint è facoltativo se il server ha registrato le associazioni con il mapper dell'endpoint. Vedere RpcEpRegister.

Il formato e il contenuto di un endpoint dipendono dalla sequenza di protocollo specificata, come illustrato nella tabella endpoint/opzione seguente.

Opzione

Opzioni specifiche del protocollo. Il campo dell'opzione non è obbligatorio. Ogni opzione viene specificata da una coppia {name, value} che usa il valore dell'opzione del nome=dell'opzione della sintassi. Le opzioni sono definite per ogni sequenza di protocollo, come illustrato nella tabella Endpoint/Option seguente.

Sequenza di protocollo Endpoint Esempio Nome opzione
ncacn_nb_tcp Intero compreso tra 1 e 254. Molti valori compresi tra 0 e 32 sono riservati da Microsoft. 100 Nessuno
ncacn_nb_ipx (come sopra) (come sopra) Nessuno
ncacn_nb_nb (come sopra) (come sopra) Nessuno
Ncacn_ip_tcp Numero di porta Internet. 1025 Nessuno
ncacn_np Pipe denominata. Il nome deve iniziare con "\\pipe". \\pipe\\pipename Sicurezza
ncacn_spx Intero compreso tra 1 e 65535. 5000 Nessuno
ncacn_dnet_nsp Numero di oggetto DECnet phase IV (deve essere preceduto dal carattere #) o dal nome dell'oggetto. mailserver #17 Nessuno
ncacn_at_dsp Stringa di caratteri, fino a 22 byte di lunghezza. myservicesendpoint Nessuno
ncacn_vns_spp Numero di porta SPP delle viti compreso tra 250 e 511. 500 Nessuno
ncadg_mq Intero compreso tra 1 e 65535. 5000 Nessuno
ncacn_http Numero di porta Internet. 2215 Nomi di server proxy HTTP e RPC, opzione HttpConnection
ncadg_ip_udp Numero di porta Internet. 1025 Nessuno
ncadg_ipx Intero compreso tra 1 e 65535. 5000 Nessuno
ncalrpc Stringa che specifica il nome dell'applicazione o del servizio. La stringa non può includere caratteri barra rovesciata. my_printer Sicurezza

Il nome dell'opzione HttpConnectionOption , supportato per la sequenza di protocollo ncacn_http, accetta il valore seguente.

Nome opzione Valore
HttpConnectOption UsareHttpProxy

HttpConnectionOption consente di indirizzare il comportamento di RPC durante la creazione di connessioni HTTP. Il valore UseHttpProxy indica a RPC di instradare il traffico tramite il proxy Http in ogni momento, incluso quando il client dispone delle opzioni Internet impostate in Internet Explorer per ignorare il server proxy per gli indirizzi locali. Questa opzione indirizza il client a connettersi forzatamente al proxy RPC tramite il proxy Http. Questo consente di velocizzare il tempo per stabilire una connessione perché ignora qualsiasi ritardo di ricerca del server RPC direttamente prima di usare il proxy HTTP.

Se questa opzione HttpConnectionOption viene usata e Internet Explorer nel client non è configurata per l'uso del proxy Http, le connessioni potrebbero non riuscire con RPC_S_INVALID_NETWORK_OPTIONS.

HttpConnectOption=UseHttpProxy

Per altre informazioni su HttpConnectionOption, vedere Uso di HTTP come trasporto RPC.

Il nome dell'opzione Sicurezza , supportato per ncalrpc, ncacn_np, ncadg_ip_udp e le sequenze di protocolli di ncadg_ipx, accetta i valori di opzione seguenti.

Nome opzione Valore opzione
Sicurezza {identificazione | anonima | rappresentazione} {dynamic | static} {true | false}

Se viene specificato il nome dell'opzione di sicurezza, è necessario specificare una voce da ogni set di valori delle opzioni di sicurezza. I valori delle opzioni devono essere separati da un carattere di spazio singolo. Ad esempio, i campi Opzione seguenti sono validi:

Security=identification dynamic true
Security=impersonation static true

I valori delle opzioni di sicurezza hanno i significati seguenti.

Valore dell'opzione di sicurezza Descrizione
Anonimo Il client è anonimo per il server.
Dynamic Le modifiche apportate all'identità di sicurezza client vengono visualizzate dal server quando il server usa la sicurezza del trasporto. Si tratta della modalità predefinita per la sicurezza a livello di trasporto LRPC (ncalrpc) e per la sicurezza a livello di trasporto denominata locale (ncacn_np).
False Effettivo = FALSE; tutte le impostazioni dei privilegi token, incluse quelle impostate su OFF, sono incluse nel token nel server e possono essere abilitate dal server. I privilegi sono rilevanti solo per le chiamate RPC dello stesso computer.
Identificazione Il server dispone di informazioni sul client ma non può rappresentare.
Rappresentazione Il server può agire per conto del client all'interno del sistema locale (la sicurezza a livello di trasporto non supporta la delega).
Statico Le modifiche apportate all'identità di sicurezza client non vengono visualizzate dal server quando il server usa la sicurezza del trasporto. Questa è l'unica modalità disponibile per la sicurezza a livello di trasporto con nome remoto (ncacn_np). L'identità del chiamante viene salvata durante la prima chiamata alla procedura remota su tale handle di associazione, non al momento della creazione dell'handle di associazione.
True Effettivo = TRUE; solo le impostazioni dei privilegi token impostate su ON sono incluse nel token nel server. I privilegi impostati su OFF non possono essere attivati dal server se questa opzione viene usata. I privilegi sono rilevanti solo per le chiamate RPC dello stesso computer.

Per altre informazioni sulle opzioni di sicurezza, Sicurezza.

Commenti

Lo spazio vuoto non è consentito nelle associazioni di stringhe, tranne se richiesto dalla sintassi Option . Le impostazioni predefinite per i campi NetworkAddress, Endpoint e Option variano in base al valore del membro ProtocolSequence .

Per tutti i campi di associazione di stringa, un singolo carattere barra rovesciata (\) viene interpretato come carattere di escape. Per specificare un singolo carattere di barra rovesciata letterale, è necessario specificare due caratteri barra rovesciata (\\).

Un'associazione di stringa contiene la rappresentazione di caratteri di un handle di associazione e occasionalmente parti di un handle di associazione. Le associazioni di stringhe sono utili per rappresentare parti di un handle di associazione, ma non possono essere usate per effettuare chiamate di routine remote. Devono prima essere convertiti in un handle di associazione chiamando RpcBindingFromStringBinding.

Inoltre, un'associazione stringa non contiene tutte le informazioni di un handle di associazione. Ad esempio, le informazioni di autenticazione, se presenti, associate a un handle di associazione non vengono tradotte nell'associazione di stringa restituita chiamando RpcBindingToStringBindingBinding.

Durante lo sviluppo di un'applicazione distribuita, i server possono comunicare le informazioni di associazione ai client usando associazioni di stringa per stabilire una relazione client-server senza usare il database del mapping degli endpoint o il database name-service. Per stabilire una relazione di questo tipo, usare la funzione RpcBindingToStringBinding per convertire uno o più handle di associazione da un vettore di binding a un'associazione di stringhe e fornire l'associazione stringa al client.

Esempio

Di seguito sono riportati esempi di associazioni di stringhe valide. In questi esempi, obj-uuid viene usato per praticità per rappresentare un UUID valido in formato stringa. Anziché visualizzare UUID 308FB580-1EB2-11CA-923B-08002B1075A7, gli esempi mostrano obj-uuid.

obj-uuid@ncadg_mq:mymqserver
obj-uuid@ncacn_http:major7.microsoft.com[2225]
obj_uuid@ncacn_http:major7.microsoft.com[,HttpProxy=proxysvr:80,
    RpcProxy=websvr1.microsoft.com:80]
obj_uuid@ncacn_http:major7.microsoft.com[,HttpProxy=proxysvr:80,
    RpcProxy=websvr1.microsoft.com:80,HttpConnectOption=UseHttpProxy]
obj-uuid@ncacn_ip_tcp:16.20.16.27[2001]
obj-uuid@ncacn_ip_tcp:16.20.16.27[endpoint=2001]
obj-uuid@ncacn_nb_nb:
obj-uuid@ncacn_nb_nb:[100]
obj-uuid@ncacn_np:
obj-uuid@ncacn_np:[\\pipe\\p3,Security=impersonation static true]
obj-uuid@ncacn_np:\\\\marketing[\\pipe\\p2\\p3\\p4]
obj-uuid@ncacn_np:\\\\marketing[endpoint=\\pipe\\p2\\p3\\p4]
obj-uuid@ncacn_np:\\\\sales
obj-uuid@ncacn_np:\\\\sales[\\pipe\\p1,Security=identification dynamic true]
obj-uuid@ncalrpc:
obj-uuid@ncalrpc:[object1_name_demonstrating_that_these_can_be_lengthy]
obj-uuid@ncalrpc:[object2_name,Security=anonymous static true]
obj-uuid@ncacn_vns_spp:server@group@org[500]
obj-uuid@ncacn_dnet_nsp:took[elf_server]
obj-uuid@ncacn_dnet_nsp:took[endpoint=elf_server]
obj-uuid@ncadg_ip_udp:128.10.2.30
obj-uuid@ncadg_ip_udp:maryos.microsoft.com[1025]
obj-uuid@ncadg_ipx: ~0000000108002B30612C[5000]
obj-uuid@ncadg_ipx:printserver
obj-uuid@ncacn_spx:annaw[4390]
obj-uuid@ncacn_spx:~0000000108002B30612C

RpcBindingFromStringBinding

RpcBindingToStringBinding

RpcEpRegister

Uso di HTTP come trasporto RPC