Bagikan melalui


Fungsi InternetReadFile (wininet.h)

Membaca data dari handel yang dibuka oleh fungsi InternetOpenUrl, FtpOpenFile, atau HttpOpenRequest .

Sintaks

BOOL InternetReadFile(
  [in]  HINTERNET hFile,
  [out] LPVOID    lpBuffer,
  [in]  DWORD     dwNumberOfBytesToRead,
  [out] LPDWORD   lpdwNumberOfBytesRead
);

Parameter

[in] hFile

Menangani yang dikembalikan dari panggilan sebelumnya ke InternetOpenUrl, FtpOpenFile, atau HttpOpenRequest.

[out] lpBuffer

Penunjuk ke buffer yang menerima data.

[in] dwNumberOfBytesToRead

Jumlah byte yang akan dibaca.

[out] lpdwNumberOfBytesRead

Penunjuk ke variabel yang menerima jumlah byte yang dibaca. InternetReadFile menetapkan nilai ini ke nol sebelum melakukan pemeriksaan kesalahan atau pekerjaan apa pun.

Nilai kembali

Mengembalikan TRUE jika berhasil, atau FALSE sebaliknya. Untuk mendapatkan informasi kesalahan yang diperluas, hubungi GetLastError. Aplikasi juga dapat menggunakan InternetGetLastResponseInfo bila perlu.

Keterangan

InternetReadFile beroperasi seperti fungsi ReadFile dasar, dengan beberapa pengecualian. Biasanya, InternetReadFile mengambil data dari handel HINTERNET sebagai aliran byte berurutan. Jumlah data yang akan dibaca untuk setiap panggilan ke InternetReadFile ditentukan oleh parameter dwNumberOfBytesToRead dan data dikembalikan dalam parameter lpBuffer . Bacaan normal mengambil dwNumberOfBytesToRead yang ditentukan untuk setiap panggilan ke InternetReadFile hingga akhir file tercapai. Untuk memastikan semua data diambil, aplikasi harus terus memanggil fungsi InternetReadFile hingga fungsi mengembalikan TRUE dan parameter lpdwNumberOfBytesRead sama dengan nol. Ini sangat penting jika data yang diminta ditulis ke cache, karena jika tidak, cache tidak akan diperbarui dengan benar dan file yang diunduh tidak akan diterapkan ke cache. Perhatikan bahwa penembolokan terjadi secara otomatis kecuali permintaan asli untuk membuka aliran data yang mengatur bendera INTERNET_FLAG_NO_CACHE_WRITE .

Ketika aplikasi mengambil handel menggunakan InternetOpenUrl, WinINet mencoba membuat semua data terlihat seperti unduhan file, dalam upaya untuk membuat membaca dari Internet lebih mudah untuk aplikasi. Untuk beberapa jenis informasi, seperti daftar direktori file FTP, ini mengonversi data yang akan dikembalikan oleh
InternetReadFile ke aliran HTML. Ini dilakukan berdasarkan baris demi baris. Misalnya, ini dapat mengonversi daftar direktori FTP ke baris HTML dan mengembalikan HTML ini ke aplikasi.

WinINet mencoba menulis HTML ke buffer lpBuffer baris pada satu waktu. Jika buffer aplikasi terlalu kecil agar pas setidaknya satu baris HTML yang dihasilkan, kode kesalahan ERROR_INSUFFICIENT_BUFFER dikembalikan sebagai indikasi ke aplikasi bahwa aplikasi membutuhkan buffer yang lebih besar. Selain itu, garis yang dikonversi mungkin tidak sepenuhnya mengisi buffer, sehingga InternetReadFile dapat kembali dengan lebih sedikit data di lpBuffer daripada yang diminta. Bacaan berikutnya akan mengambil semua HTML yang dikonversi. Aplikasi harus kembali memeriksa bahwa semua data diambil seperti yang dijelaskan sebelumnya.

Seperti semua aspek lain dari Api WinINet, fungsi ini tidak dapat dipanggil dengan aman dari dalam DllMain atau konstruktor dan destruktor objek global.

Saat berjalan secara asinkron, jika panggilan ke InternetReadFile tidak mengakibatkan transaksi selesai, itu akan mengembalikan FALSE dan panggilan berikutnya ke GetLastError akan mengembalikan ERROR_IO_PENDING. Ketika transaksi selesai , InternetStatusCallback yang ditentukan dalam panggilan sebelumnya ke InternetSetStatusCallback akan dipanggil dengan INTERNET_STATUS_REQUEST_COMPLETE.

Catatan WinINet tidak mendukung implementasi server. Selain itu, itu tidak boleh digunakan dari layanan. Untuk implementasi atau layanan server, gunakan Microsoft Windows HTTP Services (WinHTTP).
 

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 2000 Professional [hanya aplikasi desktop]
Server minimum yang didukung Windows 2000 Server [hanya aplikasi desktop]
Target Platform Windows
Header wininet.h
Pustaka Wininet.lib
DLL Wininet.dll

Lihat juga

Fungsi Umum

Fungsi WinINet