Bagikan melalui


WINHTTP_STATUS_CALLBACK fungsi panggilan balik (winhttp.h)

Jenis WINHTTP_STATUS_CALLBACK mewakili fungsi panggilan balik status yang ditentukan aplikasi.

Sintaks

WINHTTP_STATUS_CALLBACK WinhttpStatusCallback;

void WinhttpStatusCallback(
  [in] HINTERNET hInternet,
  [in] DWORD_PTR dwContext,
  [in] DWORD dwInternetStatus,
  [in] LPVOID lpvStatusInformation,
  [in] DWORD dwStatusInformationLength
)
{...}

Parameter

[in] hInternet

Handel yang fungsi panggilan baliknya dipanggil.

[in] dwContext

Penunjuk ke DWORD yang menentukan nilai konteks yang ditentukan aplikasi yang terkait dengan handel dalam parameter hInternet .

Nilai konteks dapat ditetapkan ke handel Sesi, Sambungkan, atau Minta dengan memanggil WinHttpSetOption dengan opsi WINHTTP_OPTION_CONTEXT_VALUE . Atau, WinHttpSendRequest dapat digunakan untuk mengaitkan nilai konteks dengan handel Permintaan.

[in] dwInternetStatus

Menunjuk ke DWORD yang menentukan kode status yang menunjukkan mengapa fungsi panggilan balik dipanggil. Ini bisa menjadi salah satu nilai berikut:

WINHTTP_CALLBACK_STATUS_CLOSING_CONNECTION

Menutup koneksi ke server. Parameter lpvStatusInformation adalah NULL.

WINHTTP_CALLBACK_STATUS_CONNECTED_TO_SERVER

Berhasil tersambung ke server. Parameter lpvStatusInformation berisi penunjuk ke LPWSTR yang menunjukkan alamat IP server dalam notasi putus-putus.

WINHTTP_CALLBACK_STATUS_CONNECTING_TO_SERVER

Menyambungkan ke server. Parameter lpvStatusInformation berisi penunjuk ke LPWSTR yang menunjukkan alamat IP server dalam notasi putus-putus.

WINHTTP_CALLBACK_STATUS_CONNECTION_CLOSED

Berhasil menutup koneksi ke server. Parameter lpvStatusInformation adalah NULL.

WINHTTP_CALLBACK_STATUS_DATA_AVAILABLE

Data tersedia untuk diambil dengan WinHttpReadData. Parameter lpvStatusInformation menunjuk ke DWORD yang berisi jumlah byte data yang tersedia. Parameter dwStatusInformationLength itu sendiri adalah 4 (ukuran DWORD).

WINHTTP_CALLBACK_STATUS_HANDLE_CREATED

Handel HINTERNET telah dibuat. Parameter lpvStatusInformation berisi penunjuk ke handel HINTERNET .

WINHTTP_CALLBACK_STATUS_HANDLE_CLOSING

Nilai handel ini telah dihentikan. Parameter lpvStatusInformation berisi penunjuk ke handel HINTERNET . Tidak akan ada lagi panggilan balik untuk handel ini.

WINHTTP_CALLBACK_STATUS_HEADERS_AVAILABLE

Header respons telah diterima dan tersedia dengan WinHttpQueryHeaders. Parameter lpvStatusInformation adalah NULL.

WINHTTP_CALLBACK_STATUS_INTERMEDIATE_RESPONSE

Menerima pesan kode status menengah (tingkat 100) dari server. Parameter lpvStatusInformation berisi penunjuk ke DWORD yang menunjukkan kode status.

WINHTTP_CALLBACK_STATUS_NAME_RESOLVED

Berhasil menemukan alamat IP server. Parameter lpvStatusInformation berisi penunjuk ke LPWSTR yang menunjukkan nama yang diselesaikan.

WINHTTP_CALLBACK_STATUS_READ_COMPLETE

Data berhasil dibaca dari server. Parameter lpvStatusInformation berisi penunjuk ke buffer yang ditentukan dalam panggilan ke WinHttpReadData. Parameter dwStatusInformationLength berisi jumlah byte yang dibaca.

Saat digunakan oleh WinHttpWebSocketReceive, parameter lpvStatusInformation berisi penunjuk ke struktur WINHTTP_WEB_SOCKET_STATUS , dan parameter dwStatusInformationLength menunjukkan ukuran lpvStatusInformation.

WINHTTP_CALLBACK_STATUS_RECEIVING_RESPONSE

Menunggu server merespons permintaan. Parameter lpvStatusInformation adalah NULL.

WINHTTP_CALLBACK_STATUS_REDIRECT

Permintaan HTTP akan mengalihkan permintaan secara otomatis. Parameter lpvStatusInformation berisi penunjuk ke LPWSTR yang menunjukkan URL baru. Pada titik ini, aplikasi dapat membaca data apa pun yang dikembalikan oleh server dengan respons pengalihan dan dapat mengkueri header respons. Ini juga dapat membatalkan operasi dengan menutup handel.

WINHTTP_CALLBACK_STATUS_REQUEST_ERROR

Terjadi kesalahan saat mengirim permintaan HTTP. Parameter lpvStatusInformation berisi penunjuk ke struktur WINHTTP_ASYNC_RESULT . Anggota dwResult menunjukkan ID fungsi yang disebut dan dwError menunjukkan nilai yang dikembalikan.

WINHTTP_CALLBACK_STATUS_REQUEST_SENT

Berhasil mengirim permintaan informasi ke server. Parameter lpvStatusInformation berisi penunjuk ke DWORD yang menunjukkan jumlah byte yang dikirim.

WINHTTP_CALLBACK_STATUS_RESOLVING_NAME

Mencari alamat IP nama server. Parameter lpvStatusInformation berisi penunjuk ke nama server yang sedang diselesaikan.

WINHTTP_CALLBACK_STATUS_RESPONSE_RECEIVED

Berhasil menerima respons dari server. Parameter lpvStatusInformation berisi penunjuk ke DWORD yang menunjukkan jumlah byte yang diterima.

WINHTTP_CALLBACK_STATUS_SECURE_FAILURE

Satu atau beberapa kesalahan terjadi saat membuat koneksi Aman (HTTPS) ke server. Parameter lpvStatusInformation berisi penunjuk ke DWORD yang merupakan kombinasi bitwise-OR dari nilai kesalahan. Untuk informasi selengkapnya, lihat deskripsi untuk lpvStatusInformation.

WINHTTP_CALLBACK_STATUS_SENDING_REQUEST

Mengirim permintaan informasi ke server. Parameter lpvStatusInformation adalah NULL.

WINHTTP_CALLBACK_STATUS_SENDREQUEST_COMPLETE

Permintaan berhasil diselesaikan. Parameter lpvStatusInformation adalah nilai lpOptional yang diteruskan ke WinHttpSendRequest (isi permintaan awal), dan parameter dwStatusInformationLength menunjukkan jumlah byte isi awal yang berhasil ditulis (nilai dwOptionalLength yang diteruskan ke WinHttpSendRequest).

WINHTTP_CALLBACK_STATUS_WRITE_COMPLETE

Data berhasil ditulis ke server. Parameter lpvStatusInformation berisi pointer ke DWORD yang menunjukkan jumlah byte yang ditulis.

Saat digunakan oleh WinHttpWebSocketSend, parameter lpvStatusInformation berisi penunjuk ke struktur WINHTTP_WEB_SOCKET_STATUS , dan parameter dwStatusInformationLength menunjukkan ukuran lpvStatusInformation.

WINHTTP_CALLBACK_STATUS_GETPROXYFORURL_COMPLETE

Operasi yang dimulai oleh panggilan ke WinHttpGetProxyForUrlEx selesai. Data tersedia untuk diambil dengan WinHttpReadData.

WINHTTP_CALLBACK_STATUS_CLOSE_COMPLETE

Koneksi berhasil ditutup melalui panggilan ke WinHttpWebSocketClose. Parameter lpvStatusInformation adalah NULL.

WINHTTP_CALLBACK_STATUS_SHUTDOWN_COMPLETE

Koneksi berhasil dimatikan melalui panggilan ke WinHttpWebSocketShutdown. Parameter lpvStatusInformation adalah NULL.

[in] lpvStatusInformation

Penunjuk ke buffer yang menentukan informasi yang berkaitan dengan panggilan ini ke fungsi panggilan balik. Format data ini tergantung pada nilai argumen dwInternetStatus . Untuk informasi selengkapnya, lihat dwInternetStatus.

Jika argumen dwInternetStatus WINHTTP_CALLBACK_STATUS_SECURE_FAILURE, maka lpvStatusInformation menunjuk ke DWORD yang merupakan kombinasi bitwise-OR dari satu atau beberapa nilai berikut.

Nilai Makna
WINHTTP_CALLBACK_STATUS_FLAG_CERT_REV_FAILED
Pemeriksaan pencabutan sertifikasi telah diaktifkan, tetapi pemeriksaan pencabutan gagal memverifikasi apakah sertifikat telah dicabut. Server yang digunakan untuk memeriksa pencabutan mungkin tidak dapat dijangkau.
WINHTTP_CALLBACK_STATUS_FLAG_INVALID_CERT
Sertifikat SSL tidak valid.
WINHTTP_CALLBACK_STATUS_FLAG_CERT_REVOKED
Sertifikat SSL dicabut.
WINHTTP_CALLBACK_STATUS_FLAG_INVALID_CA
Fungsi ini tidak terbiasa dengan Otoritas Sertifikat yang menghasilkan sertifikat server.
WINHTTP_CALLBACK_STATUS_FLAG_CERT_CN_INVALID
Nama umum sertifikat SSL (bidang nama host) salah, misalnya, jika Anda memasukkan www.microsoft.com dan nama umum pada sertifikat mengatakan www.msn.com.
WINHTTP_CALLBACK_STATUS_FLAG_CERT_DATE_INVALID
Tanggal sertifikat SSL yang diterima dari server buruk. Sertifikat kedaluwarsa.
WINHTTP_CALLBACK_STATUS_FLAG_SECURITY_CHANNEL_ERROR
Aplikasi mengalami kesalahan internal saat memuat pustaka SSL.

[in] dwStatusInformationLength

WINHTTP_CALLBACK_STATUS_REDIRECT panggilan balik status memberikan nilai dwStatusInformationLength yang sesuai dengan jumlah karakter LPWSTR yang ditujukkan oleh lpvStatusInformation.

Nilai kembali

Tidak ada

Keterangan

Fungsi panggilan balik harus threadsafe dan masuk kembali karena dapat dipanggil pada utas lain untuk permintaan terpisah, dan masuk kembali pada utas yang sama untuk permintaan saat ini. Oleh karena itu harus dikodekan untuk menangani masuknya kembali dengan aman saat diproses. Ketika parameter dwInternetStatus sama dengan WINHTTP_CALLBACK_STATUS_HANDLE_CLOSING, panggilan balik tidak perlu dapat menangani masuknya kembali untuk permintaan yang sama, karena panggilan balik ini dijamin menjadi yang terakhir, dan tidak terjadi ketika pesan lain untuk permintaan ini ditangani.

Fungsi panggilan balik status menerima pembaruan tentang status operasi asinkron melalui bendera pemberitahuan. Pemberitahuan yang menunjukkan operasi tertentu selesai disebut pemberitahuan penyelesaian, atau hanya penyelesaian. Tabel berikut mencantumkan enam bendera penyelesaian dan fungsi terkait yang selesai saat bendera ini diterima.

Bendera penyelesaian Fungsi
WINHTTP_CALLBACK_STATUS_DATA_AVAILABLE WinHttpQueryDataAvailable
WINHTTP_CALLBACK_STATUS_HEADERS_AVAILABLE WinHttpReceiveResponse
WINHTTP_CALLBACK_STATUS_READ_COMPLETE WinHttpReadData
WINHTTP_CALLBACK_STATUS_SENDREQUEST_COMPLETE WinHttpsendRequest
WINHTTP_CALLBACK_STATUS_WRITE_COMPLETE WinHttpWriteData
WINHTTP_CALLBACK_STATUS_REQUEST_ERROR Salah satu fungsi di atas ketika terjadi kesalahan.
 

Karena panggilan balik dilakukan selama pemrosesan permintaan, aplikasi harus menghabiskan waktu sesedikempat mungkin dalam fungsi panggilan balik untuk menghindari penurunan throughput data di jaringan. Misalnya, menampilkan kotak dialog dalam fungsi panggilan balik bisa menjadi operasi panjang sehingga server mengakhiri permintaan.

Fungsi panggilan balik dapat dipanggil dalam konteks utas yang berbeda dari utas yang memulai permintaan.

Demikian pula, tidak ada afinitas utas panggilan balik saat Anda memanggil WinHttp secara asinkron: panggilan mungkin dimulai dari satu utas, tetapi utas lain dapat menerima panggilan balik.

Catatan Untuk informasi selengkapnya tentang implementasi di Windows XP dan Windows 2000, lihat Persyaratan Run-Time.
 

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
Redistribusi WinHTTP 5.0 dan Internet Explorer 5.01 atau yang lebih baru pada Windows XP dan Windows 2000.

Lihat juga

Versi WinHTTP

WinHttpSetStatusCallback