Fungsi RxFinalizeNetFcb (rxprocs.h)
RxFinalizeNetFCB menyelesaikan struktur FCB yang diberikan. Pemanggil harus memiliki kunci eksklusif pada NET_ROOT yang terkait dengan FCB.
Sintaks
BOOLEAN RxFinalizeNetFcb(
[out] OUT PFCB ThisFcb,
[in] IN BOOLEAN RecursiveFinalize,
[in] IN BOOLEAN ForceFinalize,
[in] IN LONG ReferenceCount
);
Parameter
[out] ThisFcb
Penunjuk ke struktur FCB untuk diselesaikan.
[in] RecursiveFinalize
Nilai yang menunjukkan apakah finalisasi harus dilakukan secara rekursif.
[in] ForceFinalize
Nilai yang menunjukkan apakah finalisasi harus dipaksakan, terlepas dari jumlah referensi.
Jika parameter ini FALSE, maka anggota NodeReferenceCount dari FCB harus 1 agar FCB diselesaikan.
[in] ReferenceCount
Jumlah referensi pada FCB yang masih akan memungkinkan finalisasi paksa.
Menampilkan nilai
RxFinalizeNetFCB mengembalikan TRUE pada keberhasilan atau FALSE jika finalisasi tidak terjadi:
Keterangan
Rutinitas RxFinalizeNetFCB biasanya tidak dipanggil oleh driver pengalih mini jaringan secara langsung. RDBSS memanggil rutinitas ini secara internal ketika paket permintaan I/O diterima untuk IRP_MJ_CLOSE. IRP ini biasanya diterima oleh RDBSS sebagai respons terhadap aplikasi mode pengguna yang meminta operasi penutupan file. Dimungkinkan juga bagi driver kernel lain untuk mengeluarkan IRP seperti itu.
Strategi penanganan jarak dekat di RDBSS didasarkan pada aksiom bahwa beban kerja di server harus diminimalkan sebagai dan bila memungkinkan. Ada sejumlah aplikasi yang berulang kali menutup dan membuka file yang sama (pemrosesan file batch, misalnya). Dalam kasus ini, file yang sama dibuka, baris dari buffer dibaca, file ditutup dan kumpulan operasi yang sama diulang berulang kali.
Ini ditangani di RDBSS oleh pemrosesan permintaan penutupan yang tertunda. Ada penundaan sekitar 10 detik antara menyelesaikan permintaan dan memulai pemrosesan pada permintaan penutupan. Ini membuka jendela di mana operasi terbuka berikutnya dapat diciutkan ke SRV_OPEN yang ada. Interval waktu dapat disetel untuk memenuhi persyaratan ini.
Sebelum memanggil RxFinalizeNetFCB, kunci pada struktur FCB harus diperoleh dalam mode eksklusif.
Jika parameter RecursiveFinalize FALSE, RxFinalizeNetFCB akan gagal jika ada referensi luar biasa ke FCB (anggota OpenCount atau CleanCount dari struktur FCB bukan nol).
Jika parameter ForceFinalize TRUE, RxFinalizeNetFCB menyebabkan sistem ASSERT pada build yang diperiksa.
Setelah finalisasi rekursif, jumlah referensi yang terkait dengan FCB bisa paling banyak 1 agar finalisasi lebih lanjut terjadi. Jumlah referensi akhir ini milik tabel nama awalan NET_ROOT. Finalisasi aktual dibagi menjadi dua bagian:
- jika jumlah referensi sama dengan 1 atau parameter ForceFinalizeTRUE, RxFinalizeNetFCB menyelesaikan FCB.
- jika jumlah referensi masuk ke nol, FCB diselesaikan dan memori yang digunakan untuk FCB juga dirilis.
Persyaratan
Persyaratan | Nilai |
---|---|
Target Platform | Desktop |
Header | rxprocs.h (termasuk Rxprocs.h) |
IRQL | <= APC_LEVEL |