struktur PREFETCH_OPEN_ECP_CONTEXT (ntifs.h)
Struktur PREFETCH_OPEN_ECP_CONTEXT mengkomunikasikan apakah prefetcher melakukan permintaan terbuka tertentu pada file.
Sintaks
typedef struct _PREFETCH_OPEN_ECP_CONTEXT {
PVOID Context;
} PREFETCH_OPEN_ECP_CONTEXT, *PPREFETCH_OPEN_ECP_CONTEXT;
Anggota
Context
Penunjuk ke konteks buram yang terkait dengan permintaan terbuka.
Keterangan
Prefetcher adalah komponen dari sistem operasi yang terintegrasi erat dengan manajer cache dan manajer memori untuk membuat akses disk lebih efisien dan karenanya meningkatkan performa. Jika komponen lain mengganggu prefetcher, performa sistem menurun dan mungkin mengalami kebuntuan. Oleh karena itu, prefetcher melampirkan struktur PREFETCH_OPEN_ECP_CONTEXT ke file untuk berkomunikasi bahwa prefetcher telah melakukan permintaan terbuka pada file tersebut. Prefetcher menggunakan GUID GUID_ECP_PREFETCH_OPEN dalam panggilan ke rutinitas FltCreateFileEx2 atau IoCreateFileEx untuk melampirkan struktur PREFETCH_OPEN_ECP_CONTEXT . Driver filter sistem file (filter) dapat memanggil FltFindExtraCreateParameter untuk menentukan apakah PREFETCH_OPEN_ECP_CONTEXT dilampirkan ke file dan kemudian mengambil tindakan yang tepat. Filter harus memanggil rutinitas FltIsEcpFromUserMode untuk menentukan apakah struktur konteks PREFETCH_OPEN_ECP_CONTEXT berasal dari mode kernel. Untuk mencegah aplikasi berbahaya melakukan spoofing prefetcher, filter tidak boleh menerima PREFETCH_OPEN_ECP_CONTEXT jika berasal dari mode pengguna.
Setelah prefetcher melampirkan struktur PREFETCH_OPEN_ECP_CONTEXT ke file, semua aktivitas prefetcher tambahan untuk file melibatkan objek file yang telah PREFETCH_OPEN_ECP_CONTEXT terpasang. Jika filter harus mengidentifikasi permintaan sistem file prefetcher selain membuat permintaan, filter harus mempertahankan statusnya sendiri (misalnya, konteks handel manajer filter). Filter mempertahankan statusnya sendiri untuk menentukan apakah objek file tertentu adalah objek file prefetcher.
Manajer memori dapat menyimpan objek file prefetcher. Manajer memori kemudian dapat menggunakan objek file prefetcher untuk aplikasi lain yang melakukan I/O yang dipetakan atau I/O cache dengan menggunakan manajer cache. Oleh karena itu, objek file prefetcher dapat digunakan untuk paging I/O sebelum atau setelah prefetcher menutup handelnya. I/O halaman ini dapat menyertakan penulisan halaman, meskipun prefetcher tidak pernah menulis data apa pun. Penulisan halaman dihasilkan oleh aplikasi lain. Manajer memori menulis data dari aplikasi dengan menggunakan objek file prefetcher yang di-cache. Oleh karena itu, filter melakukan pekerjaan yang dipicu oleh penulisan halaman, filter harus tetap melakukan pekerjaan itu, bahkan jika penulisan halaman datang pada objek file prefetcher.
Ketika filter menentukan bahwa operasi pembersihan terjadi pada objek file prefetcher, filter tidak boleh lagi menganggap objek file tersebut dibuka sebelumnya.
Berikut ini adalah operasi umum yang dilakukan prefetcher (namun, dalam operasi ini, prefetcher tidak pernah mengubah konten file):
- Volume terbuka dan ditutup
- File terbuka dan ditutup
- Informasi file kueri
- Atur informasi file (hanya untuk menginstruksikan sistem file untuk tidak memperbarui waktu akses terakhir untuk pembukaan ini)
- Membuat bagian gambar dan data
- Melakukan I/O halaman asinkron
Untuk menghindari kemungkinan situasi kebuntuan, filter harus:
- Jangan pernah memblokir operasi prefetcher apa pun.
- Lewati operasi prefetcher tanpa mengeluarkan permintaan sistem file lainnya.
Agar aplikasi atau driver apa pun dapat mengakses salah satu data yang sedang diambil sebelumnya, aplikasi atau driver harus membuka handelnya sendiri ke file atau membuat bagian atau keduanya.
Untuk informasi tentang cara menggunakan ECP untuk mengaitkan informasi tambahan dengan operasi IRP_MJ_CREATE pada file, lihat Menggunakan Parameter Pembuatan Ekstra dengan Operasi IRP_MJ_CREATE.
Struktur PREFETCH_OPEN_ECP_CONTEXT bersifat baca-saja. Anda harus menggunakannya untuk mengambil informasi tentang prefetcher yang membuka ECP saja. Untuk informasi selengkapnya tentang masalah ini, lihat ECP yang Ditentukan Sistem.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows Vista |
Header | ntifs.h (termasuk Ntifs.h) |