Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Biasanya, Anda membuat handel konteks dengan menentukan atribut [context_handle] pada definisi jenis dalam file IDL. Definisi jenis juga secara implisit menentukan rutinitas run-down konteks, yang harus Anda sediakan. Jika komunikasi antara klien dan server rusak, run time server memanggil rutinitas ini untuk melakukan pembersihan yang diperlukan. Untuk informasi selengkapnya tentang rutinitas run-down konteks, lihat Rutinitas Run-down Konteks Server.
Antarmuka yang menggunakan handel konteks harus memiliki handel pengikatan untuk pengikatan awal, yang harus dilakukan sebelum server dapat mengembalikan handel konteks. Anda dapat menggunakan handel pengikatan otomatis, implisit, atau eksplisit untuk membuat pengikatan dan menetapkan konteks.
Handel konteks harus dari jenis * yang batal , atau jenis yang diselesaikan untuk membatalkan *. Program server melemparkannya ke jenis yang diperlukan.
Catatan
Penggunaan [in, out] untuk parameter handel konteks tidak disarankan kecuali untuk rutinitas yang menutup handel konteks. Jika konteks menangani parameter yang ditandai [in, out] digunakan, jangan meneruskan null atau handel konteks yang tidak diinisialisasi dari klien ke server. Penunjuk NULL ke handel konteks harus diteruskan sebagai gantinya. Harap dicatat, parameter handel konteks yang ditandai [in] tidak menerima pointer NULL .
Fragmen definisi antarmuka sampel berikut menunjukkan bagaimana aplikasi terdistribusi dapat menggunakan handel konteks untuk membuka server dan memperbarui file data untuk setiap klien.
Antarmuka harus berisi panggilan prosedur jarak jauh untuk menginisialisasi handel dan mengaturnya ke nilai non-null . Dalam contoh ini, fungsi RemoteOpen melakukan operasi ini. Ini menentukan handel konteks dengan atribut arah [out]. Atau, Anda dapat mengembalikan handel konteks sebagai nilai pengembalian prosedur. Namun dalam contoh ini, kita akan meneruskan penanganan konteks melalui daftar parameter.
Dalam contoh ini, informasi konteks adalah handel file. Ini melacak lokasi saat ini dalam file. Antarmuka mengemas handel file sebagai handel konteks dan meneruskannya sebagai parameter untuk panggilan prosedur jarak jauh. Struktur berisi nama file dan handel file.
/* file: cxhndl.idl (fragment of interface definition file) */
typedef [context_handle] void * PCONTEXT_HANDLE_TYPE;
typedef [ref] PCONTEXT_HANDLE_TYPE * PPCONTEXT_HANDLE_TYPE;
short RemoteOpen([out] PPCONTEXT_HANDLE_TYPE pphContext,
[in, string] unsigned char * pszFile);
void RemoteRead(
[in] PCONTEXT_HANDLE_TYPE phContext,
[out, size_is(cbBuf)] unsigned char achBuf[],
[in, out] short *pcbBuf);
short RemoteClose([in, out] PPCONTEXT_HANDLE_TYPE pphContext);
Fungsi RemoteOpen membuat handel konteks non-null yang valid. Ini meneruskan handel konteks ke klien. Panggilan prosedur jarak jauh berikutnya, seperti RemoteRead, menggunakan handel konteks sebagai penunjuk.
Selain prosedur jarak jauh yang menginisialisasi handel konteks, antarmuka harus berisi prosedur yang membebaskan konteks server dan mengatur handel konteks ke NULL. Dalam contoh sebelumnya, fungsi RemoteClose melakukan operasi ini.