Rutina spuštění kontextu serveru
Pokud se komunikace rozdělí, zatímco server udržuje kontext jménem klienta, může být potřeba rutina čištění vyčistit stav udržovaný serverem jménem daného klienta. Tato rutina čištění se nazývá rutina spuštění kontextu. Když se připojení přeruší, procedura serveru a knihovna runtime tuto rutinu zavolá při každém popisovači kontextu otevřeném klientem.
Je vyžadována rutina spuštění kontextu a je implicitně deklarována a pojmenovaná, když použijete atribut [context_handle] na definici typu. Pokud byl atribut [context_handle] použit přímo na parametr, server nebude volat rutinu spuštění kontextu.
Kontextová syntaxe rutiny spuštění je:
void __RPC_USER type-id_rundown (type-id);
Všimněte si, že název typu určuje název kontextové rutiny spuštění.
Fragment kódu, který následuje, představuje ukázkovou rutinu spuštění kontextu. který volá proceduru RemoteClose použitou v příkladu v Rozhraní Development using Context Handles, Server Development using Context Handlesa Client Development using Context Handles. Tento postup zavře popisovač souboru, uvolní paměť přidruženou k souboru a přiřadí NULL kontextového popisovače. Přiřazení null je výsledkem volání funkce RemoteClose a není nutné ve scénáři spuštění. Doba běhu RPC vyčistí svůj stav bez ohledu na to, zda je kontextový popisovač nastaven na NULL.
//file: cxhndp.c (fragment of file containing remote procedures)
//The rundown routine is associated with the context handle type.
void __RPC_USER PCONTEXT_HANDLE_TYPE_rundown(
PCONTEXT_HANDLE_TYPE phContext)
{
printf("Client died with an open file, closing it..\n");
RemoteClose(&phContext);
assert(phContext == 0);
}