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

Lihat juga

RxCreateNetFcb

RxCreateNetFobx

RxCreateNetRoot

RxCreateSrvCall

RxCreateSrvOpen

RxCreateVNetRoot

RxDereference

RxFinalizeConnection

RxFinalizeNetFobx

RxFinalizeNetRoot

RxFinalizeSrvCall

RxFinalizeSrvOpen

RxFinalizeVNetRoot

RxFinishFcbInitialization

RxForceFinalizeAllVNetRoots

RxReference

RxSetSrvCallDomainName

RxpDereferenceNetFcb

RxpReferenceNetFcb

Struktur FCB