Struktur FCB

Struktur blok kontrol file (FCB) ditunjukkan oleh bidang FsContext dalam objek file. Semua operasi yang berbagi FCB merujuk ke file yang sama. Sayangnya, server SMB diimplementasikan hari ini sedih sehingga nama dapat menjadi alias, sehingga dua nama yang berbeda bisa menjadi file yang sama. FCB adalah titik fokus operasi file. Karena operasi pada FCB yang sama sebenarnya pada file yang sama, sinkronisasi didasarkan pada FCB daripada beberapa objek tingkat yang lebih tinggi.

Setiap kali struktur FCB dibuat, struktur SRV_OPEN dan FOBX yang sesuai juga dibuat. Lebih dari satu struktur SRV_OPEN dapat dikaitkan dengan struktur FCB tertentu, dan lebih dari satu struktur FOBX dikaitkan dengan struktur SRV_OPEN tertentu. Dalam kebanyakan kasus, struktur satu SRV_OPEN dikaitkan dengan FCB, dan jumlah struktur FOBX yang terkait dengan struktur SRV_OPEN tertentu adalah 1. Untuk meningkatkan lokalitas spasial dan perilaku penomoran dalam kasus seperti itu, alokasi untuk struktur FCB juga melibatkan alokasi untuk satu struktur SRV_OPEN dan FOBX terkait.

RDBSS mencoba mengalokasikan struktur FCB, SRV_OPEN, dan FOBX terkait bersama-sama dalam memori untuk meningkatkan perilaku penomoran. RDBSS tidak mengalokasikan struktur FCB dan NET_ROOT bersama-sama karena struktur NET_ROOT tidak di-page, tetapi struktur FCB biasanya di-paged (kecuali jika merupakan file halaman).

Struktur FCB sesuai dengan setiap file dan direktori yang terbuka. Struktur FCB dibagi menjadi dua bagian berikut:

  • Bagian non-halaman yang dialokasikan di kumpulan non-halaman

  • Bagian halaman

Yang pertama adalah NON_PAGED_FCB dan kemudian disebut sebagai FCB.

FCB berisi pointer ke bagian NON_PAGED_FCB yang sesuai. Backpointer dipertahankan dari NON_PAGED_FCB ke FCB untuk tujuan penelusuran kesalahan dalam build yang diperiksa.

NON_PAGED_FCB berisi struktur pointer khusus yang digunakan oleh Memory Manager dan Cache Manager untuk memanipulasi objek bagian. Perhatikan bahwa nilai untuk pointer ini biasanya diatur di luar sistem file.

Struktur FCB berisi yang berikut ini:

  • Struktur FSRTL_COMMON_HEADER

  • Jumlah tanda tangan dan referensi

  • Nama dan informasi tabel terkait

  • Backpointer ke struktur NET_ROOT terkait

  • Daftar struktur SRV_OPEN terkait

  • Objek perangkat

  • Penyimpanan tambahan apa pun yang diminta oleh pengalih mini jaringan atau pembuat struktur FCB