Interne RPC-Statusinformationen
Dieser Abschnitt enthält Details zur internen Struktur der Statusinformationen, die von der RPC-Run-Time gesammelt werden.
Alle RPC-Laufzeitstatusinformationen sind in Zellen enthalten. Eine Zelle ist die kleinste Einheit von Informationen, die einzeln angezeigt und aktualisiert werden können.
Jedes Schlüsselobjekt in der RPC-Run-Time unterhält eine oder mehrere Zellen mit Informationen über seinen Status. Jede Zelle verfügt über eine Zell-ID. Wenn sich ein Objekt auf ein anderes Objekt bezieht, tut es dies, indem es die Zell-ID dieses Objekts angibt. Die Schlüsselobjekte, über die die RPC-Run-Time Informationen pflegen kann, sind Endpunkte, Threads, Verbindungsobjekte, Server Call (SCALL)-Objekte und Client Call (CCALL)-Objekte.
Wenn ein RPC-Server ausgeführt wird, hört die RPC-Run-Time mit Hilfe eines oder mehrerer Worker-Threads eine Reihe von Endpunkten ab. Immer wenn Daten an den Server übertragen werden, erfasst ein Thread die Daten und bestimmt, was die eingehende Anforderung ist. Wenn die Anforderung das Erstellen einer Verbindung ist, wird ein Connection-Objekt erstellt, und dieses Objekt ruft dann alle Aufrufe der Verbindung ab. Wenn ein RPC-Aufruf auf der Verbindung erfolgt, instanziiert das Connection-Objekt ein "Server Call" (SCALL)-Objekt, das dem "Client Call" (CCALL)-Objekt entspricht. Dieses Serveraufrufobjekt behandelt dann diesen bestimmten Aufruf.
Wenn ein RPC Client ausgeführt wird, erstellt die RPC Run-Time bei jedem Aufruf ein Client Call Objekt. Dieses Clientanrufobjekt enthält Informationen zu diesem bestimmten Aufruf.
Endpunkt-Zellen
Aus der Sicht der RPC-Run-Time 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 Statuswert: zugeordnet, aktiv, oder inaktiv. Die meisten Endpunkte sind aktiv. Ein Endpunkt hat den Status zugeordnet, wenn der Erstellungsprozess begonnen hat, 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.
Thread-Zellen
Server-Threads sind Worker-Threads (Standard-Win32-Threads zur Verwendung durch RPC).
Die Felder in einer Thread-Zelle sind:
Status
Der Statuswert: Verarbeitet, Versendet, Zugeordnet oder Leerlauf. Ein verarbeitender Thread ist einer, der sich innerhalb der Run-Time befindet und Informationen verarbeitet. Ein verteilter Thread wurde bereits an die vom Server bereitgestellte Manager-Routine (in der Regel einfach Server-Routine genannt) weitergeleitet (aufgerufen). Ein zugewiesener Thread wurde zwischengespeichert. Ein leerer Thread ist für die Bearbeitung von Anfragen 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.
Verbindungsobjekt-Zellen
Die Felder in einer Verbindungsobjektzelle sind:
Flags
Flag-Werte sind exklusiv/, nicht-exklusiv, Authentifizierungsebene und Authentifizierungsdienst.
LastTransmitFragmentSize
Die Größe des letzten über die Verbindung übertragenen Fragments.
Endpoint
Die Zell-ID des Endpunkts, von dem diese Verbindung abgerufen wurde.
LastSendTime
Das letzte Mal, dass Daten über eine Verbindung gesendet wurden.
LastReceiveTime
Das letzte Mal, dass Daten über eine Verbindung empfangen wurden.
Server Call-Objektzellen
Die Felder in einer Server call (SCALL)-Objektzelle sind:
Status
Der Statuswert: zugewiesen, aktiv oder abgeschickt. Ein zugeordneter Aufruf ist inaktiv und wird zwischengespeichert. Wenn ein Aufruf aktiv ist, verarbeitet die RPC-Run-Time die Informationen zu diesem Aufruf. Wenn ein Aufruf verteilt ist, wurde die Manager-Routine (Server-Routine) aufgerufen und ist noch nicht zurückgekehrt.
ProcNum
Die Prozedurnummer (Vorgangsnummer, in Netmon-Erfassungsdateien) dieses Aufrufs. Die RPC-Run-Time identifiziert einzelne Routinen aus einer Schnittstelle, indem sie diese anhand ihrer Position in der IDL-Datei nummeriert. Die erste Routine in der Schnittstelle ist Nummer null, die zweite Nummer eins, und so weiter.
InterfaceUUIDStart
Das erste DWORD der Schnittstelle UUID.
ServicingTID
Die Zell-ID des Threads, der diesen Aufruf bedient. Wenn der Aufruf nicht aktiv oder versandt ist, enthält dies 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.
Client Call-Objektzellen
Ein Client-Call (CCALL)-Objekt ist in zwei Zellen unterteilt, da die Informationen zu einem Client-Anruf zu umfangreich sind, um in eine einzige Zelle zu passen. Die erste Zelle heißt Client Call Information, die zweite Call Destination Information. Die meisten Tools zeigen die Informationen zusammen, sodass Sie nicht zwischen ihnen unterscheiden müssen.
Informationen über Client-Aufrufe werden nicht gepflegt, es sei denn, Sie sammeln Informationen über den vollständigen Status. Es gibt eine Ausnahme dieser Regel: Informationen zu Clientaufrufen, die innerhalb eines Serveraufrufs ausgeführt werden, werden auch dann beibehalten, wenn nur Serverstatusinformationen gesammelt werden. Auf diese Weise können Sie Anrufe nachverfolgen, die mehrere Zwischenschritte umfassen.
Die Felder in der Zelle "Kundengesprächsinformationen" sind:
ProcNum
Die Prozedurnummer (Vorgangsnummer, in netmon Capture-Dateien) der aufgerufenen Methode. Die RPC-Run-Time identifiziert einzelne Routinen einer Schnittstelle, indem diese nach ihrer Position in der IDL-Datei nummeriert werden. Die erste Routine in der Schnittstelle wird die Nummer 0 sein, die zweite die Nummer 1 und so weiter.
ServicingThread
Die Zell-ID des Threads, in dem dieser Aufruf erfolgt.
IfStart
Das erste DWORD der UUID der Schnittstelle, über die der Aufruf erfolgt.
Endpoint
Die ersten 12 Zeichen des Endpunkts auf dem Server, an den der Anruf getätigt wurde.
Die Felder in der Zelle "Anrufzielinformationen" sind:
ProtocolSequence
Die Protokollsequenz für diesen Aufruf.
LastUpdateTime
Die Zeit (in Millisekunden nach dem Start), zu der die Informationen über den Clientanruf oder das Anrufziel aktualisiert wurden.
TargetServer
Die ersten 24 Zeichen des Namens des Servers, an den der Anruf getätigt wird.