Freigeben über


Rpc-Zustandsinformationen : Interne Informationen

Dieser Abschnitt enthält Details zur internen Struktur der Zustandsinformationen, die von der RPC-Laufzeit erfasst werden.

Alle RPC-Laufzeitzustandsinformationen sind in Zellen enthalten. Eine Zelle ist die kleinste Informationseinheit, die einzeln angezeigt und aktualisiert werden kann.

Jedes Schlüsselobjekt im RPC-Run-Time behält mindestens eine Zelle mit Informationen über seinen Zustand bei. Jede Zelle verfügt über eine Zellen-ID. Wenn ein -Objekt auf ein anderes Objekt verweist, wird dazu die Zellen-ID dieses Objekts angegeben. Die wichtigsten Objekte, zu denen der RPC-Run-Time Informationen verwalten kann, sind Endpunkte, Threads, Verbindungsobjekte, Serveraufrufobjekte (SCALL) und Clientanrufobjekte (CCALL).

Wenn ein RPC-Server ausgeführt wird, lauscht der RPC-Run-Time mithilfe eines oder mehrerer Arbeitsthreads an einer Reihe von Endpunkten. Wenn Daten an den Server übertragen werden, übernimmt ein Thread die Daten und bestimmt, was die eingehende Anforderung ist. Wenn die Anforderung eine Verbindung erstellen soll, wird ein Connection-Objekt erstellt, und dieses Objekt verarbeitet dann alle Aufrufe der Verbindung. Wenn ein RPC-Aufruf für die Verbindung erfolgt, instanziiert das Connection-Objekt ein SCALL-Objekt (Server Call), das dem CCALL-Objekt (Client Call) entspricht. Dieses Serveraufrufobjekt verarbeitet dann diesen speziellen Aufruf.

Wenn ein RPC-Client ausgeführt wird, erstellt der RPC-Run-Time bei jedem Aufruf ein Clientaufrufobjekt. Dieses Clientaufrufobjekt enthält Informationen zu diesem bestimmten Aufruf.

Endpunktzellen

Aus Sicht der RPC-Laufzeit ist ein Endpunkt ein Einstiegspunkt, über den der jeweilige Server kontaktiert werden kann. Der Endpunkt ist immer einem bestimmten RPC-Transport zugeordnet. Die Endpunktstatusinformationen werden verwendet, um einen Clientaufruf einem bestimmten Prozess auf dem Server zuzuordnen.

Die Felder in einer Endpunktzelle sind:

ProtseqType
Die Protokollsequenz für diesen Endpunkt.

Status
Der status Wert: zugeordnet, aktiv oder inaktiv. Die meisten Endpunkte sind aktiv. Ein Endpunkt hat status zugeordnet, wenn der Erstellungsprozess gestartet wurde, aber noch nicht abgeschlossen ist. Ein Endpunkt ist inaktiv , wenn er nicht mehr verwendet wird (z. B. wenn ein Protokoll deinstalliert wurde).

EndpointName
Die ersten 28 Zeichen des Endpunktnamens.

Threadzellen

Serverthreads sind Workerthreads (Win32-Standardthreads zur Verwendung durch RPC).

Die Felder in einer Threadzelle sind:

Status
Der status Wert: "processing", "dispatched", "allocated" oder "idle". Ein Verarbeitungsthread befindet sich innerhalb des Run-Time und verarbeitet Informationen. Ein verteilter Thread wurde bereits an die vom Server bereitgestellte Managerroutine (in der Regel nur als Serverroutine bezeichnet) verteilt (aufgerufen). Ein zugeordneter Thread wurde zwischengespeichert. Ein Leerlaufthread ist für Dienstanforderungen verfügbar.

LastUpdateTime
Die Zeit (in Millisekunden nach dem Start), zu der die Informationen zuletzt aktualisiert wurden.

TID
Die Thread-ID dieses Threads. Dies ist nützlich, wenn Sie versuchen, mit der Threadliste im Debugger zu korrelieren.

Verbindungsobjektzellen

Die Felder in einer Verbindungsobjektzelle sind:

Flaggen
Flagwerte sind exklusive/, nicht exklusive Werte, Authentifizierungsebene und Authentifizierungsdienst.

LastTransmitFragmentSize
Die Größe des letzten Fragments, das über die Verbindung übertragen wurde.

Endpunkt
Die Zellen-ID des Endpunkts, von dem diese Verbindung abgerufen wurde.

LastSendTime
Der Zeitpunkt, zu dem Daten zum letzten Mal über eine Verbindung gesendet wurden.

LastReceiveTime
Das letzte Mal, zu dem Daten für eine Verbindung empfangen wurden.

Serveraufrufobjektzellen

Die Felder in einer SCALL-Objektzelle (Server Call) sind:

Status
Der status Wert: zugeordnet, aktiv oder verteilt. Ein zugeordneter Aufruf ist inaktiv und zwischengespeichert. Wenn ein Aufruf aktiv ist, verarbeitet der RPC-Run-Time Informationen zu diesem Aufruf. Wenn ein Anruf versendet wird, wurde die Managerroutine (Serverroutine) aufgerufen und noch nicht zurückgegeben.

ProcNum
Die Prozedurnummer (Vorgangsnummer in netmon-Erfassungsdateien) dieses Aufrufs. Die RPC-Run-Time identifiziert einzelne Routinen aus einer Schnittstelle, indem sie nach Position in der IDL-Datei nummeriert werden. Die erste Routine in der Schnittstelle ist die Nummer 0, die zweite Nummer 1 usw.

InterfaceUUIDStart
Das erste DWORD der Schnittstellen-UUID.

ServicingTID
Die Zellen-ID des Threads, der diesen Aufruf verarbeitet. Wenn der Aufruf nicht aktiv oder nicht weitergeleitet wird, enthält dieser veraltete Informationen.

CallFlags
Diese Flagwerte geben an, ob dies der zwischengespeicherte Aufruf in einer exklusiven Verbindung ist, ob es sich um einen asynchronen Aufruf handelt, ob es sich um einen Pipeaufruf handelt und ob es sich um einen LRPC- oder OSF-Aufruf handelt.

LastUpdateTime
Die Zeit (in Millisekunden nach dem Start), zu der die Statusinformationen des Aufrufobjekts zuletzt aktualisiert wurden.

PID
Die Prozess-ID des Aufrufers. Nur für LRPC-Aufrufe gültig.

TID
Die Thread-ID des Aufrufers. Nur für LRPC-Aufrufe gültig.

Clientaufrufobjektzellen

Ein CCALL-Objekt (Client Call) wird in zwei Zellen unterteilt, da die Informationen zu einem Clientaufruf zu groß sind, um in eine Zelle zu passen. Die erste Zelle wird als Clientanrufinformationen und die zweite als Anrufzielinformationen bezeichnet. Die meisten Tools zeigen die Informationen zusammen an, sodass Sie nicht zwischen ihnen unterscheiden müssen.

Informationen zu Clientaufrufen werden nur verwaltet, wenn Sie vollständige Statusinformationen sammeln. Es gibt eine Ausnahme von dieser Regel: Informationen zu Clientaufrufen, die innerhalb eines Serveraufrufs ausgeführt werden, werden auch dann beibehalten, wenn nur Serverstatusinformationen erfasst werden. Auf diese Weise können Sie Aufrufe über mehrere Hops hinweg nachverfolgen.

Die Felder in der Zelle Clientanrufinformationen sind:

ProcNum
Die Prozedurnummer (Vorgangsnummer in netmon-Erfassungsdateien) der aufgerufenen Methode. Die RPC-Run-Time identifiziert einzelne Routinen aus einer Schnittstelle, indem sie nach Position in der IDL-Datei nummeriert werden. Die erste Routine in der Schnittstelle ist die Nummer 0, die zweite Nummer 1 usw.

ServicingThread
Die Zellen-ID des Threads, für den dieser Aufruf erfolgt.

IfStart
Das erste DWORD der Schnittstellen-UUID, für die der Aufruf erfolgt.

Endpunkt
Die ersten 12 Zeichen des Endpunkts auf dem Server, auf dem der Aufruf erfolgt ist.

Die Felder in der Zelle Call Target Information sind:

ProtocolSequence
Die Protokollsequenz für diesen Aufruf.

LastUpdateTime
Die Zeit (in Millisekunden nach dem Start), zu der die Informationen über den Clientaufruf oder das Anrufziel aktualisiert wurden.

TargetServer
Die ersten 24 Zeichen des Namens des Servers, an den der Aufruf erfolgt.