Uitvoeringsroutine servercontext
Als de communicatie afbreekt terwijl de server de context onderhoudt namens de client, kan er een opschoningsroutine nodig zijn om de status op te schonen die door de server wordt onderhouden namens een bepaalde client. Deze opschoningsroutine wordt een contextrun-down routinegenoemd. Wanneer een verbinding wordt verbroken, roepen de server-stub en de runtimebibliotheek deze routine aan op elke contextgreep die door de client wordt geopend.
De uitvoeringsroutine van de context is vereist en wordt impliciet gedeclareerd en benoemd wanneer u het kenmerk [context_handle] toepast op een typedefinitie. De server roept de uitvoeringsroutine van de context niet aan als het kenmerk [context_handle] rechtstreeks op een parameter is toegepast.
De syntaxis van de contextuitvoeringsroutine is:
void __RPC_USER type-id_rundown (type-id);
Houd er rekening mee dat de typenaam de naam bepaalt van de uitvoeringsroutine van de context.
Het volgende codefragment geeft een voorbeeld van een uitvoeringsroutine voor context. die de RemoteClose-procedure aanroept die wordt gebruikt in het voorbeeld in interfaceontwikkeling met behulp van contextafhandelingen, serverontwikkeling met behulp van contextgrepenen clientontwikkeling met behulp van contextgrepen. Met deze procedure wordt de bestandsingang gesloten, wordt het geheugen dat aan het bestand is gekoppeld, vrijgemaakt en wordt NULL- aan de contextgreep toegewezen. Het toewijzen van NULL- is het gevolg van het aanroepen van de functie RemoteClose en is niet nodig in een run-downscenario. De RPC-uitvoeringstijd schoont de status op, ongeacht of de contextgreep is ingesteld op 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);
}