Bagikan melalui


Rutinitas Run-down Konteks Server

Jika komunikasi rusak saat server mempertahankan konteks atas nama klien, rutinitas pembersihan mungkin diperlukan untuk membersihkan status yang dikelola oleh server atas nama klien tertentu. Rutinitas pembersihan ini disebut rutinitas run-down konteks. Ketika koneksi terputus, stub server dan pustaka run-time akan memanggil rutinitas ini pada setiap handel konteks yang dibuka oleh klien.

Rutinitas run-down konteks diperlukan, dan secara implisit dideklarasikan dan dinamai, saat Anda menerapkan atribut [context_handle] ke definisi jenis. Server tidak akan memanggil rutinitas run-down konteks jika atribut [context_handle] diterapkan langsung ke parameter.

Sintaks rutin run-down konteksnya adalah:

void __RPC_USER type-id_rundown (type-id);

Perhatikan bahwa nama jenis menentukan nama rutinitas run-down konteks.

Fragmen kode yang mengikuti menyajikan sampel rutinitas run-down konteks. yang memanggil prosedur RemoteClose yang digunakan dalam contoh dalam Pengembangan Antarmuka Menggunakan Handel Konteks, Pengembangan Server Menggunakan Handel Konteks, dan Pengembangan Klien Menggunakan Handel Konteks. Prosedur ini menutup handel file, membebaskan memori yang terkait dengan file, dan menetapkan NULL ke handel konteks. Menetapkan NULL adalah hasil dari memanggil fungsi RemoteClose, dan tidak diperlukan dalam skenario run-down. Run time RPC membersihkan statusnya terlepas dari apakah handel konteks diatur ke 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);
}