Condividi tramite


Interni delle Informazioni sullo Stato del RPC

In questa sezione vengono fornite informazioni dettagliate sulla struttura interna delle informazioni sullo stato raccolte dal runtime RPC.

Tutte le informazioni sullo stato di runtime RPC sono contenute nelle celle. Una cella è la più piccola unità di informazioni che è possibile visualizzare e aggiornare singolarmente.

Ogni oggetto principale nell'RPC Run-Time manterrà una o più celle di informazioni sul suo stato. Ogni cella ha un identificativo. Quando un oggetto fa riferimento a un altro oggetto, lo fa specificando l'ID cella dell'oggetto. Gli oggetti chiave di cui l'RPC Run-Time può mantenere informazioni sono gli endpoint, i thread, gli oggetti di connessione, gli oggetti di chiamata del server (SCALL) e gli oggetti di chiamata del cliente (CCALL).

Quando un server RPC è in esecuzione, il Run-Time RPC è in ascolto su un set di endpoint che usano uno o più thread di lavoro. Ogni volta che i dati vengono trasmessi al server, un thread preleva i dati e determina qual è la richiesta in ingresso. Se la richiesta consiste nel creare una connessione, viene creato un oggetto Connection e questo oggetto esegue il servizio di tutte le chiamate alla connessione. Quando viene effettuata una chiamata RPC sulla connessione, l'oggetto Connection istanzia un oggetto Chiamata Server (SCALL) corrispondente all'oggetto Chiamata Client (CCALL). Questo oggetto Server Call gestisce quindi questa particolare chiamata.

Quando un client RPC è in esecuzione, l'RPC Run-Time crea un oggetto Chiamata Client ogni volta che si effettua una chiamata. Questo oggetto Client Call contiene informazioni su questa particolare chiamata.

Celle endpoint

Dal punto di vista della fase di esecuzione RPC, un endpoint è un punto di ingresso attraverso il quale è possibile contattare il server specifico. L'endpoint è sempre associato a un determinato trasporto RPC. Le informazioni sullo stato dell'endpoint vengono usate per associare una chiamata client a un processo specifico nel server.

I campi in una cella endpoint sono:

ProtseqType
Sequenza di protocollo per questo endpoint.

Status
Valore di stato: allocato, attivoo inattivo. La maggior parte degli endpoint è attiva. Un endpoint ha lo stato assegnato quando il processo di creazione è iniziato, ma non è ancora completo. Un endpoint è inattivo se non è più in uso, ad esempio quando è stato disinstallato un protocollo.

EndpointName
Primi 28 caratteri del nome dell'endpoint.

Celle del thread

I thread server sono thread di lavoro (thread Win32 standard per l'uso da RPC).

I campi in una cella di thread sono:

stato
Valore di stato: elaborazione, spedito, allocatoo inattivo. Un thread di elaborazione è uno che si trova all'interno del Run-Time e sta elaborando le informazioni. Un thread inviato è già stato inviato (chiamato) alla routine di gestione fornita dal server (in genere chiamata semplicemente routine del server ). Il thread allocato è stato memorizzato nella cache. È disponibile un thread inattivo per le richieste.

UltimoOrarioAggiornamento
Ora (in millisecondi dopo l'avvio) dell'ultimo aggiornamento delle informazioni.

TID
L'ID del thread. Ciò è utile quando si tenta di correlare con l'elenco di thread nel debugger.

Celle dell'oggetto Connessione

I campi nella cella di un oggetto di connessione sono:

bandiere
I valori dei flag includono esclusivo/non esclusivo, livello di autenticazionee servizio di autenticazione.

LastTransmitFragmentSize
La dimensione dell'ultimo frammento trasmesso attraverso la connessione.

endpoint
ID della cella dell'endpoint da cui è stata ottenuta la connessione.

LastSendTime
L'ultima volta che i dati sono stati inviati su una connessione.

UltimoTempoRicezione
Ultima volta che i dati sono stati ricevuti su una connessione.

Oggetti di chiamata server celle

I campi in una cella dell'oggetto SCALL (Server Call) sono:

stato
Valore di stato: allocato, attivo, o inviato. Una chiamata allocata è inattiva e archiviata nella cache. Quando una chiamata è attiva , il RPC Run-Time elabora le informazioni relative a questa chiamata. Quando una chiamata viene inviata, la routine di gestione (routine del server) è stata chiamata e non è stata ancora restituita.

ProcNum
Numero di procedura (numero di operazione, nei file di acquisizione "netmon") di questa chiamata. La Run-Time RPC identifica le singole routine di un'interfaccia numerandole in base alla posizione nel file IDL. La prima routine nell'interfaccia sarà numero zero, il secondo numero uno e così via.

InterfaceUUIDStart
Primo DWORD dell'UUID dell'interfaccia.

ServicingTID
ID cella del thread che gestisce questa chiamata. Se la chiamata non è attiva o inviata, contiene informazioni non aggiornate.

CallFlags
Questi valori di flag indicano se si tratta della chiamata memorizzata nella cache in una connessione esclusiva, se si tratta di una chiamata asincrona, se si tratta di una chiamata pipe e se si tratta di una chiamata LRPC o OSF.

OraUltimoAggiornamento
Ora (in millisecondi dopo l'avvio) dell'ultimo aggiornamento delle informazioni sullo stato dell'oggetto di chiamata.

PID
L'ID processo del chiamante. Valido solo per le chiamate LRPC.

TID
ID del thread del chiamante. Valido solo per le chiamate LRPC.

Celle dell'oggetto «Client Call»

Un oggetto CCALL (Client Call) è suddiviso in due celle, perché le informazioni su una chiamata client sono troppo grandi per adattarsi a una cella. La prima cella viene denominata Client Call Informatione la seconda viene chiamata Call Target Information. La maggior parte degli strumenti mostrerà le informazioni insieme, quindi non è necessario distinguere tra di esse.

Le informazioni sulle chiamate client non vengono mantenute a meno che non si raccolgano informazioni sullo stato completo. Esiste un'eccezione a questa regola: le informazioni sulle chiamate client effettuate all'interno di una chiamata al server vengono mantenute anche quando vengono raccolte solo le informazioni sullo stato del server. In questo modo è possibile tracciare le chiamate che si estendono su più hop.

I campi nella cella delle informazioni della chiamata del cliente sono:

ProcNum
Numero di procedura (numero operazione, nei file di cattura netmon) del metodo chiamato. La Run-Time RPC identifica le singole routine di un'interfaccia numerandole in base alla posizione nel file IDL. La prima routine nell'interfaccia sarà numero zero, il secondo numero uno e così via.

ServicingThread
ID della cella del thread in cui viene effettuata la chiamata.

SeInizio
Primo DWORD dell'UUID dell'interfaccia su cui viene effettuata la chiamata.

endpoint
Primi 12 caratteri dell'endpoint nel server a cui è stata effettuata la chiamata.

I campi nella cella Call Target Information (Informazioni destinazione chiamata) sono:

SequenzaProtocollo
Sequenza di protocollo per questa chiamata.

LastUpdateTime
Tempo (in millisecondi dopo l'avvio) in cui sono state aggiornate le informazioni sulla chiamata client o sulla destinazione della chiamata.

TargetServer
Primi 24 caratteri del nome del server a cui viene effettuata la chiamata.