Fungsi WinHttpCloseHandle (winhttp.h)
Fungsi WinHttpCloseHandle menutup satu handel HINTERNET (lihat Handel HINTERNET di WinHTTP).
Sintaks
WINHTTPAPI BOOL WinHttpCloseHandle(
[in] HINTERNET hInternet
);
Parameter
[in] hInternet
Handel HINTERNET yang valid (lihat Handel HINTERNET di WinHTTP) untuk ditutup.
Nilai kembali
TRUE jika handel berhasil ditutup, jika tidak FALSE. Untuk mendapatkan informasi kesalahan yang diperluas, hubungi GetLastError. Di antara kode kesalahan yang dikembalikan adalah sebagai berikut.
Kode Kesalahan | Deskripsi |
---|---|
|
Dukungan fungsi WinHTTP sedang dimatikan atau dibongkar. |
|
Terjadi kesalah internal. |
|
Memori tidak cukup tersedia untuk menyelesaikan operasi yang diminta. (Kode galat Windows) |
Keterangan
Bahkan ketika WinHTTP digunakan dalam mode asinkron (yaitu, ketika WINHTTP_FLAG_ASYNC telah diatur di WinHttpOpen), fungsi ini beroperasi secara sinkron. Nilai yang dikembalikan menunjukkan keberhasilan atau kegagalan. Untuk mendapatkan informasi kesalahan yang diperluas, hubungi GetLastError.
Jika ada panggilan balik status yang terdaftar untuk handel yang ditutup dan handel dibuat dengan nilai konteks non-NULL , panggilan balik WINHTTP_CALLBACK_STATUS_HANDLE_CLOSING dilakukan. Ini adalah panggilan balik terakhir yang dibuat dari handel dan menunjukkan bahwa handel sedang dihancurkan.
Aplikasi dapat mengakhiri permintaan asinkron yang sedang berlangsung dengan menutup handel permintaan HINTERNET menggunakan WinHttpCloseHandle. Ingatlah hal-hal berikut:
- Setelah aplikasi memanggil WinHttpCloseHandle pada handel WinHTTP, aplikasi tidak dapat memanggil fungsi WinHTTP API lainnya menggunakan handel tersebut dari utas apa pun.
- Bahkan setelah panggilan ke WinHttpCloseHandle kembali, aplikasi masih harus siap untuk menerima panggilan balik untuk handel tertutup, karena WinHTTP dapat merobek handel secara asinkron. Jika permintaan asinkron tidak berhasil diselesaikan, panggilan balik akan menerima pemberitahuan WINHTTP_CALLBACK_STATUS_REQUEST_ERROR.
- Jika aplikasi mengaitkan struktur data konteks atau objek dengan handel, aplikasi harus mempertahankan pengikatan tersebut hingga fungsi panggilan balik menerima pemberitahuan WINHTTP_CALLBACK_STATUS_HANDLE_CLOSING . Ini adalah pemberitahuan panggilan balik terakhir yang dikirim WinHTTP sebelum menghapus objek handel dari memori. Untuk menerima pemberitahuan panggilan balik WINHTTP_CALLBACK_STATUS_HANDLE_CLOSING , aplikasi harus mengaktifkan bendera WINHTTP_CALLBACK_FLAG_HANDLES dalam panggilan WinHttpSetStatusCallback .
-
Sebelum memanggil WinHttpCloseHandle, aplikasi dapat memanggil WinHttpSetStatusCallback untuk menunjukkan bahwa tidak ada lagi panggilan balik yang harus dilakukan:
WinHttpSetStatusCallback( hRequest, NULL, 0, 0 );
Mungkin tampak bahwa struktur data konteks kemudian dapat segera dikosongkan daripada harus menunggu pemberitahuan WINHTTP_CALLBACK_STATUS_HANDLE_CLOSING , tetapi ini tidak terjadi: WinHTTP tidak menyinkronkan WinHttpSetStatusCallback dengan panggilan balik yang berasal dari utas pekerja. Akibatnya, panggilan balik sudah dapat berlangsung dari utas lain, dan aplikasi dapat menerima pemberitahuan panggilan balik bahkan setelah NULL mengeluarkan penunjuk fungsi panggilan balik dan menghapus struktur data konteks handel. Karena kondisi balapan yang potensial ini, konservatiflah dalam membebaskan struktur konteks sampai setelah menerima pemberitahuan WINHTTP_CALLBACK_STATUS_HANDLE_CLOSING .
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows XP, Windows 2000 Professional dengan SP3 [hanya aplikasi desktop] |
Server minimum yang didukung | Windows Server 2003, Windows 2000 Server dengan SP3 [hanya aplikasi desktop] |
Target Platform | Windows |
Header | winhttp.h |
Pustaka | Winhttp.lib |
DLL | Winhttp.dll |
Redistribusi | WinHTTP 5.0 dan Internet Explorer 5.01 atau yang lebih baru pada Windows XP dan Windows 2000. |