Informazioni sullo stato RPC Internals

In questa sezione vengono fornite informazioni dettagliate sulla struttura interna delle informazioni sullo stato raccolte da RPC Run-Time.

Tutte le informazioni sullo stato di esecuzione RPC sono contenute nelle celle. Una cella è la più piccola unità di informazioni che possono essere visualizzate e aggiornate singolarmente.

Ogni oggetto chiave nella Run-Time RPC manterrà una o più celle di informazioni sullo stato. Ogni cella ha un ID cella. Quando un oggetto fa riferimento a un altro oggetto, lo fa specificando l'ID cella dell'oggetto. Gli oggetti chiave che il Run-Time RPC può mantenere informazioni su sono endpoint, thread, oggetti di connessione, oggetti Server Call (SCALL) e oggetti Chiamata client (CCALL).

Quando un server RPC è in esecuzione, il Run-Time RPC è in ascolto su un set di endpoint usando uno o più thread di lavoro. Ogni volta che i dati vengono trasmessi al server, un thread raccoglie 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 i servizi di tutte le chiamate sulla connessione. Quando viene eseguita una chiamata RPC sulla connessione, l'oggetto Connection crea un'istanza di un oggetto SCALL (Server Call) corrispondente all'oggetto CCALL (Client Call). Questo oggetto Chiamata server gestisce quindi questa chiamata specifica.

Quando un client RPC è in esecuzione, il Run-Time RPC crea un oggetto Chiamata client ogni volta che viene eseguita una chiamata. Questo oggetto Chiamata client contiene informazioni su questa chiamata specifica.

Celle dell'endpoint

Dal punto di vista dell'esecuzione RPC, un endpoint è un punto di ingresso tramite 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 dell'endpoint sono:

ProtseqType
Sequenza di protocollo per questo endpoint.

Stato
Valore di stato: allocato, attivo o inattivo. La maggior parte degli endpoint è attiva. Un endpoint ha allocato lo stato al momento dell'avvio del processo di creazione, ma non è ancora stato completato. Un endpoint è inattivo se non è più in uso, ad esempio quando è stato disinstallato un protocollo.

EndpointName
Primi 28 caratteri del nome dell'endpoint.

Celle di thread

I thread del server sono thread di lavoro (thread Win32 standard da usare da RPC).

I campi in una cella thread sono:

Stato
Valore di stato: elaborazione, invio, allocato o inattività. Un thread di elaborazione è uno che si trova all'interno dell'Run-Time e sta elaborando le informazioni. Un thread inviato è già stato inviato (chiamato) alla routine di gestione fornita dal server (in genere denominata routine del server). È stato memorizzato nella cache un thread allocato . Un thread inattiva è disponibile per le richieste di servizio.

LastUpdateTime
Ora (in millisecondi dopo l'avvio) quando le informazioni sono state aggiornate.

TID
ID thread di questo thread. Questo è utile quando si tenta di correlare con l'elenco di thread nel debugger.

Celle dell'oggetto Connection

I campi in una cella dell'oggetto di connessione sono:

Bandiere
I valori del flag includono un servizioesclusivonon esclusivo/, a livello di autenticazione e autenticazione.

LastTransmitFragmentSize
Dimensione dell'ultimo frammento trasmesso sulla connessione.

Endpoint
ID cella dell'endpoint da cui è stata prelevata la connessione.

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

LastReceiveTime
L'ultima volta che i dati sono stati ricevuti in una connessione.

Celle dell'oggetto Chiamata server

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

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

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

InterfaceUUIDStart
Primo DWORD dell'interfaccia UUID.

ManutenzioneTID
ID cella del thread che esegue la manutenzione di questa chiamata. Se la chiamata non è attiva o inviata, contiene informazioni non aggiornate.

CallFlags
Questi valori 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 a pipe e se si tratta di una chiamata LRPC o OSF.

LastUpdateTime
Ora (in millisecondi dopo l'avvio) quando le informazioni sullo stato dell'oggetto di chiamata sono state aggiornate.

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

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

Celle dell'oggetto Chiamata client

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

Le informazioni sulle chiamate client non vengono mantenute a meno che non si raccolgono informazioni sullo stato completo. Esiste un'eccezione a questa regola: le informazioni sulle chiamate client effettuate all'interno di una chiamata 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 Informazioni chiamate client sono:

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

ManutenzioneThread
ID cella del thread in cui viene effettuata questa chiamata.

IfStart
Primo DWORD dell'interfaccia UUID in 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:

ProtocolSequence
Sequenza di protocollo per questa chiamata.

LastUpdateTime
Ora (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.