Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Jeśli komunikacja ulega awarii, gdy serwer utrzymuje kontekst w imieniu klienta, może być konieczna rutyna oczyszczania w celu oczyszczenia stanu obsługiwanego przez serwer w imieniu danego klienta. Ta rutyna oczyszczania jest nazywana procedurą uruchamiania kontekstu . W przypadku przerwania połączenia łącznik serwer i biblioteka czasu wykonywania wywoła tę procedurę dla każdego dojścia kontekstu otwartego przez klienta.
Wymagana jest rutyna uruchamiania kontekstu i jest niejawnie zadeklarowana i nazwana po zastosowaniu atrybutu [context_handle] do definicji typu. Serwer nie wywoła procedury uruchamiania kontekstu, jeśli atrybut [context_handle] został zastosowany bezpośrednio do parametru.
Składnia procedury uruchamiania kontekstu to:
void __RPC_USER type-id_rundown (type-id);
Należy pamiętać, że nazwa typu określa nazwę procedury uruchamiania kontekstu.
Poniższy fragment kodu przedstawia procedurę uruchamiania kontekstu przykładowego. wywołuje procedurę RemoteClose używaną w przykładzie w Interface Development Using Context Handles using Context Handles, Server Development Using Context Handlesi Client Development Using Context Handles. Ta procedura zamyka dojście do pliku, zwalnia pamięć skojarzona z plikiem i przypisuje null do uchwytu kontekstowego. Przypisywanie null jest wynikiem wywołania funkcji RemoteClose i nie jest konieczne w scenariuszu uruchamiania. Czas wykonywania RPC czyści jego stan niezależnie od tego, czy dojście kontekstu jest ustawione 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);
}