Sdílet prostřednictvím


Interní informace o stavu RPC

Tato část obsahuje podrobnosti o interní struktuře informací o stavu shromážděných během běhu RPC.

Všechny informace o stavu běhu RPC jsou obsaženy v buňkách. Buňka je nejmenší jednotka informací, kterou lze zobrazit a aktualizovat jednotlivě.

Každý klíčový prvek v RPC Run-Time bude udržovat jednu nebo více informací o svém stavu. Každá buňka má ID buňky. Když objekty odkazují na jiný objekt, provede to zadáním ID buňky daného objektu. Klíčové objekty, o kterých může RPC Run-Time udržovat informace, jsou koncové body, vlákna, objekty připojení, objekty volání serveru (SCALL) a objekty volání klienta (CCALL).

Pokud je spuštěn server RPC, RPC Run-Time naslouchá na sadě koncových bodů s použitím jednoho nebo více pracovních vláken. Pokaždé, když se data přenesou na server, vlákno převezme data a určí, co je příchozí požadavek. Pokud je požadavkem vytvoření připojení, vytvoří se objekt Connection a tento objekt pak obsluhuje všechna volání připojení. Při volání RPC na spojení vytvoří objekt Spojení instanci objektu Serverové volání (SCALL), která odpovídá objektu Klientské volání (CCALL). Tento objekt volání serveru pak zpracovává toto konkrétní volání.

Když klient RPC běží, RPC Run-Time vytvoří objekt volání klienta při každém volání. Tento objekt volání klienta obsahuje informace o tomto konkrétním volání.

Buňky koncového bodu

Z pohledu běhu RPC je koncový bod vstupním bodem, přes který lze kontaktovat konkrétní server. Koncový bod je vždy přidružený k danému přenosu RPC. Informace o stavu koncového bodu slouží k přidružení volání klienta k určitému procesu na serveru.

Pole v buňce koncového bodu jsou:

ProtseqType
Posloupnost protokolů pro tento koncový bod.

stav
Hodnota stavu: přiděleno, aktivnínebo neaktivní. Většina koncových bodů je aktivní. Koncový bod má přidělený stav při spuštění procesu vytváření, ale ještě není dokončený. Koncový bod je neaktivní, pokud se už nepoužívá (například při odinstalaci protokolu).

Název koncového bodu
Prvních 28 znaků názvu koncového bodu

Buňky vlákna

Serverová vlákna jsou pracovní vlákna (standardní vlákna Win32 pro použití rpc).

Pole v buňce vlákna jsou:

Stav
Hodnota stavu: zpracováno, odesláno, přidělenonebo nečinný. Vlákno zpracování je vlákno, které je v Run-Time a zpracovává informace. odeslané vlákno již bylo odesláno (voláno) do správcovské rutiny poskytované serverem (obvykle nazývané jednoduše jako serverová rutina). Do mezipaměti bylo uloženo přidělené vlákno . Pro žádosti o služby je k dispozici nečinné vlákno.

LastUpdateTime
Čas (v milisekundách po spuštění), kdy byly informace naposledy aktualizovány.

TID
ID tohoto vlákna. To je užitečné při pokusu o korelaci se seznamem vláken v ladicím programu.

Buňky objektu připojení

Pole v buňce objektu připojení jsou:

vlajky
Hodnoty příznaků zahrnují exkluzivní/nevýlučné, úroveň ověřování a ověřovací službu .

VelikostPosledníhoPřenášenéhoFragmentu
Velikost posledního fragmentu přenášeného přes připojení.

koncový bod
ID buňky koncového bodu, ze kterého bylo toto připojení identifikováno.

PosledníČasOdeslání
Poslední čas, kdy byla data odeslána přes připojení.

LastReceiveTime
Čas posledního přijetí dat v připojení.

Buňky volání objektu serveru

Pole objektu v buňce Volání serveru (SCALL) jsou:

Stav
Hodnota stavu: přiděleno, aktivnínebo odesláno. přidělené volání je neaktivní a uložené v mezipaměti. Když je volání aktivní, RPC Run-Time zpracovává informace vztahující se k tomuto volání. Když je volání odesláno, byla volána rutina správce (rutina serveru) a ještě se nevrátila.

ProcNum
Číslo procedury (číslo operace v souboru netmon capture) tohoto volání. RPC Run-Time identifikuje jednotlivé rutiny z rozhraní jejich číslováním podle pozice v souboru IDL. První rutina v rozhraní bude číslo nula, druhé číslo jedna atd.

InterfaceUUIDStart
První DWORD rozhraní UUID.

ServicingTID
ID vlákna, které obsluhuje toto volání. Pokud volání není aktivní nebo odesláno, obsahuje zastaralé informace.

CallFlags
Hodnoty těchto příznaků označují, zda se jedná o volání uložené v mezipaměti ve výhradním připojení, zda se jedná o asynchronní volání, zda se jedná o volání přes potrubí a zda se jedná o volání LRPC nebo OSF.

časPosledníAktualizace
Čas (v milisekundách po spuštění) při poslední aktualizaci informací o stavu objektu volání.

PID
ID procesu volajícího. Platné pouze pro volání LRPC.

TID
ID vlákna volajícího. Platné pouze pro volání LRPC.

Buňky objektu klientského volání

Objekt Volání klienta (CCALL) je rozdělen do dvou buněk, protože informace o volání klienta jsou příliš velké, aby se vešly do jedné buňky. První buňka se nazývá Informace o volání klientaa druhá Informace o cíli volání . Většina nástrojů zobrazí informace společně, takže mezi nimi nemusíte rozlišovat.

Informace o voláních klientů nejsou zachovány, pokud neshromažďujete úplné informace o stavu. Toto pravidlo má jednu výjimku: informace o klientských voláních provedených v rámci volání serveru se zachovají i v případě, že se shromažďují jenom informace o stavu serveru. To umožňuje trasovat volání přes několik hopů.

Pole v buňce Informace o volání klienta jsou:

ProcNum
Číslo procedury (číslo operace, v souboru netmon capture) volané metody. RPC Run-Time identifikuje jednotlivé rutiny z rozhraní jejich číslováním podle pozice v souboru IDL. První rutina v rozhraní bude číslo nula, druhé číslo jedna atd.

ServicingThread
Identifikátor buňky vlákna, na kterém bylo toto volání provedeno.

IfStart
První DWORD rozhraní UUID, na kterém je volání provedeno.

koncového bodu
Prvních 12 znaků koncového bodu na serveru, ke kterému bylo volání provedeno.

Pole v buňce Informace o cíli volání jsou:

SekvenceProtokolu
Sekvence protokolu pro tohoto volání.

LastUpdateTime
Čas (v milisekundách po spuštění), kdy byly informace o volání klienta nebo cíli volání aktualizovány.

TargetServer
Prvních 24 znaků názvu serveru, na který je volání provedeno.