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.
Kode kontrol IOCTL_LMR_DISABLE_LOCAL_BUFFERING menonaktifkan penembolokan data dalam memori sisi klien lokal saat membaca data dari atau menulis data ke file jarak jauh. Ini adalah kode kontrol yang ditentukan secara internal yang tidak tersedia di header publik.
Untuk melakukan operasi ini, panggil fungsi DeviceIoControl dengan parameter berikut.
BOOL DeviceIoControl(
(HANDLE) hDevice, // handle to device
IOCTL_LMR_DISABLE_LOCAL_BUFFERING, // dwIoControlCode
(LPVOID) NULL, // lpInBuffer
(DWORD) 0, // nInBufferSize
(LPVOID) NULL, // lpOutBuffer
(DWORD) 0, // nOutBufferSize
(LPDWORD) lpBytesReturned, // number of bytes returned
(LPOVERLAPPED) lpOverlapped // OVERLAPPED structure
);
Parameter
-
hDevice [in]
-
Handel ke file jarak jauh. Untuk mendapatkan handel ini, panggil fungsi CreateFile .
-
dwIoControlCode [in]
-
Kode kontrol untuk operasi. Gunakan nilai 0x140390 untuk operasi ini.
-
lpInBuffer
-
Tidak digunakan, harus NULL.
-
nInBufferSize [in]
-
Ukuran buffer input, dalam byte. Harus nol.
-
lpOutBuffer [out]
-
Tidak digunakan, harus NULL.
-
nOutBufferSize [in]
-
Ukuran buffer output, dalam byte. Harus nol.
-
lpBytesReturned [out]
-
Penunjuk ke variabel yang menerima ukuran data yang disimpan dalam buffer output, dalam byte.
Jika buffer output terlalu kecil, maka panggilan gagal, fungsi GetLastError mengembalikan ERROR_INSUFFICIENT_BUFFER, dan lpBytesReturned adalah nol.
Jika parameter lpOverlapped adalah NULL, lpBytesReturned tidak boleh NULL. Bahkan ketika operasi tidak mengembalikan data output dan parameter lpOutBuffer adalah NULL, DeviceIoControl menggunakan lpBytesReturned. Setelah operasi seperti itu, nilai lpBytesReturned tidak ada artinya.
Jika lpOverlapped bukan NULL, lpBytesReturned dapat berupa NULL. Jika lpOverlapped bukan NULL dan operasi mengembalikan data, lpBytesReturned tidak berarti sampai operasi yang tumpang tindih telah selesai. Untuk mengambil jumlah byte yang dikembalikan, panggil fungsi GetOverlappedResult . Jika parameter hDevice dikaitkan dengan port penyelesaian I/O, Anda dapat mengambil jumlah byte yang dikembalikan dengan memanggil fungsi GetQueuedCompletionStatus .
-
lpOverlapped [in]
-
Penunjuk ke struktur yang TUMPANG TINDIH .
Jika parameter hDevice dibuka tanpa menentukan FILE_FLAG_OVERLAPPED, lpOverlapped diabaikan.
Jika hDevice dibuka dengan bendera FILE_FLAG_OVERLAPPED , operasi dilakukan sebagai operasi yang tumpang tindih (asinkron). Dalam hal ini, lpOverlapped harus menunjuk ke struktur TUMPANG TINDIH yang valid yang berisi handel ke objek peristiwa. Jika tidak, fungsi gagal dengan cara yang tidak dapat diprediksi.
Untuk operasi yang tumpang tindih, DeviceIoControl segera kembali, dan objek peristiwa diberi sinyal ketika operasi telah selesai. Jika tidak, fungsi tidak kembali sampai operasi selesai atau sampai terjadi kesalahan.
Mengembalikan nilai
Jika operasi berhasil diselesaikan, DeviceIoControl mengembalikan nilai bukan nol.
Jika operasi gagal atau tertunda, DeviceIoControl mengembalikan nol. Untuk mendapatkan informasi kesalahan yang diperluas, hubungi GetLastError.
Keterangan
Kode kontrol IOCTL_LMR_DISABLE_LOCAL_BUFFERING didefinisikan secara internal oleh sistem sebagai 0x140390 dan bukan dalam file header publik. Ini digunakan oleh aplikasi tujuan khusus untuk menonaktifkan penembolokan data dalam memori sisi klien lokal saat membaca data dari atau menulis data ke file jarak jauh. Setelah buffering lokal dinonaktifkan, pengaturan tetap berlaku sampai semua handel terbuka ke file ditutup dan pengalih membersihkan struktur data internalnya.
Aplikasi tujuan umum tidak boleh menggunakan IOCTL_LMR_DISABLE_LOCAL_BUFFERING, karena dapat mengakibatkan lalu lintas jaringan yang berlebihan dan kehilangan performa terkait. Kode kontrol IOCTL_LMR_DISABLE_LOCAL_BUFFERING harus digunakan hanya dalam aplikasi khusus yang memindahkan data dalam jumlah besar melalui jaringan sambil mencoba memaksimalkan penggunaan bandwidth jaringan. Misalnya, fungsi CopyFile dan CopyFileEx menggunakan IOCTL_LMR_DISABLE_LOCAL_BUFFERING untuk meningkatkan performa salinan file besar.
IOCTL_LMR_DISABLE_LOCAL_BUFFERING tidak diimplementasikan oleh sistem file lokal dan akan gagal dengan kesalahan ERROR_INVALID_FUNCTION. Mengeluarkan kode kontrol IOCTL_LMR_DISABLE_LOCAL_BUFFERING pada handel direktori jarak jauh akan gagal dengan kesalahan ERROR_NOT_SUPPORTED.
Lihat juga