Sunucu Bağlamı Çalıştırma Yordamı
Sunucu istemci adına bağlamı korurken iletişim kesilirse, belirli bir istemci adına sunucu tarafından tutulan durumu temizlemek için bir temizleme yordamı gerekebilir. Bu temizleme yordamı, bağlam aşağı çalıştırma yordamı olarak adlandırılır. Bağlantı kesilirse, sunucu saplaması ve çalışma zamanı kitaplığı, istemci tarafından açılan her bağlam tanıtıcıda bu yordamı çağırır.
Bağlam aşağı çalıştırma yordamı gereklidir ve [context_handle] özniteliğini bir tür tanımına uyguladığınızda örtük olarak bildirilir ve adlandırılır. [context_handle] özniteliği doğrudan bir parametreye uygulandıysa sunucu bağlam aşağı çalıştırma yordamını çağırmaz.
Bağlam run-down yordamı söz dizimi şöyledir:
void __RPC_USER type-id_rundown (type-id);
Tür adının bağlam aşağı çalıştırma yordamının adını belirlediğini unutmayın.
Aşağıdaki kod parçası örnek bir bağlam aşağı çalıştırma yordamı sunar. Bağlam Tanıtıcılarını Kullanarak Arabirim Geliştirmeörneğinde kullanılan RemoteClose yordamını çağıran, Bağlam Tanıtıcılarını Kullanarak Sunucu Geliştirmeve Bağlam Tanıtıcılarını Kullanarak İstemci Geliştirmeyi. Bu yordam dosya tutamacını kapatır, dosyayla ilişkili belleği serbest bırakır ve bağlam tanıtıcısına NULL atar. NULL atamak RemoteClose işlevini çağırmanın bir sonucudur ve bir run-down senaryosunda gerekli değildir. RPC çalışma zamanı, bağlam tanıtıcısının NULL olarak ayarlanıp ayarlanmadığına bakılmaksızın durumunu temizler.
//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);
}