Fungsi CcInitializeCacheMap (ntifs.h)
Sistem file memanggil rutinitas CcInitializeCacheMap untuk menyimpan file.
Sintaks
void CcInitializeCacheMap(
[in] PFILE_OBJECT FileObject,
[in] PCC_FILE_SIZES FileSizes,
[in] BOOLEAN PinAccess,
[in] PCACHE_MANAGER_CALLBACKS Callbacks,
[in] PVOID LazyWriteContext
);
Parameter
[in] FileObject
Penunjuk ke objek file untuk file.
[in] FileSizes
Arahkan ke struktur CC_FILE_SIZES yang berisi AllocationSize, FileSize, dan ValidDataLength untuk file tersebut. Struktur ini didefinisikan sebagai berikut:
typedef struct _CC_FILE_SIZES {
LARGE_INTEGER AllocationSize;
LARGE_INTEGER FileSize;
LARGE_INTEGER ValidDataLength;
} CC_FILE_SIZES, *PCC_FILE_SIZES;
Anggota | Makna |
---|---|
Ukuran Alokasi | Ukuran objek bagian baru untuk file. Diabaikan jika kurang dari atau sama dengan ukuran bagian saat ini. |
FileSize | Ukuran file baru untuk file. |
ValidDataLength | Panjang data baru yang valid untuk file. |
[in] PinAccess
Atur ke TRUE jika rutinitas CcPinXxx akan digunakan pada file.
[in] Callbacks
Penunjuk ke struktur yang dialokasikan dari kumpulan yang tidak disebarkan, yang berisi titik masuk rutinitas panggilan balik yang disediakan penelepon dan tulis balik. Struktur ini dan anggotanya didefinisikan sebagai berikut:
typedef struct _CACHE_MANAGER_CALLBACKS {
PACQUIRE_FOR_LAZY_WRITE AcquireForLazyWrite;
PRELEASE_FROM_LAZY_WRITE ReleaseFromLazyWrite;
PACQUIRE_FOR_READ_AHEAD AcquireForReadAhead;
PRELEASE_FROM_READ_AHEAD ReleaseFromReadAhead;
} CACHE_MANAGER_CALLBACKS, *PCACHE_MANAGER_CALLBACKS;
typedef
BOOLEAN (*PACQUIRE_FOR_LAZY_WRITE) (
IN PVOID Context,
IN BOOLEAN Wait
);
typedef
VOID (*PRELEASE_FROM_LAZY_WRITE) (
IN PVOID Context
);
typedef
BOOLEAN (*PACQUIRE_FOR_READ_AHEAD) (
IN PVOID Context,
IN BOOLEAN Wait
);
typedef
VOID (*PRELEASE_FROM_READ_AHEAD) (
IN PVOID Context
);
[in] LazyWriteContext
Arahkan ke informasi konteks untuk diteruskan ke rutinitas panggilan balik yang ditentukan dalam Panggilan Balik.
Mengembalikan nilai
Tidak ada
Keterangan
CcInitializeCacheMap membuat struktur data yang diperlukan untuk penembolokan data file.
Jika terjadi kegagalan, CcInitializeCacheMap menimbulkan pengecualian status untuk kegagalan tertentu tersebut. Misalnya, jika kegagalan alokasi kumpulan terjadi, CcInitializeCacheMap menimbulkan pengecualian STATUS_INSUFFICIENT_RESOURCES. Oleh karena itu, untuk mendapatkan kontrol jika kegagalan terjadi, driver harus membungkus panggilan ke CcInitializeCacheMap dalam pernyataan try-except atau try-finally .
Sistem file harus memanggil CcInitializeCacheMap untuk menyimpan file sebelum menggunakan rutinitas manajer cache lainnya pada file, kecuali file dibuat dengan penembolokan data dinonaktifkan. Di sebagian besar sistem file, penembolokan file diaktifkan secara default, tetapi dapat dinonaktifkan dengan mengatur bendera FILE_NO_INTERMEDIATE_BUFFERING ke TRUE dalam opsi pembuatan file.
Setelah memanggil CcInitializeCacheMap, sistem file dapat memanggil CcSetAdditionalCacheAttributes untuk menonaktifkan read-ahead atau write-behind, jika diinginkan.
Saat menutup file, setiap sistem file yang mendukung penembolokan file harus memanggil CcUninitializeCacheMap pada file tersebut, baik file di-cache atau tidak. Bahkan jika file dibuat dengan penembolokan dinonaktifkan, sistem file masih harus memanggil CcUninitializeCacheMap.
Makro CcIsFileCached menentukan apakah file di-cache atau tidak.
BOOLEAN CcIsFileCached(
[in] PFILE_OBJECT FileObject
);
Parameter
FileObject[in] [in]
Penunjuk ke objek file untuk file.
Nilai kembali
Mengembalikan TRUE jika file di-cache, FALSE jika tidak.
Persyaratan
Persyaratan | Nilai |
---|---|
Target Platform | Universal |
Header | ntifs.h (termasuk Ntifs.h) |
Pustaka | NtosKrnl.lib |
DLL | NtosKrnl.exe |
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk