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.

Catatan Karena beberapa objek file dapat merujuk ke file yang sama (yaitu, aliran data), dimungkinkan bagi makro CcIsFileCached untuk mengembalikan TRUE mengingat objek file yang tidak di-cache jika objek file cache lain mengacu pada aliran data yang sama. Dengan kata lain, jika ada sekumpulan objek file yang merujuk ke aliran data yang sama dan jika setidaknya salah satu objek file dalam set di-cache, CcIsFileCached akan mengembalikan TRUE untuk semua objek file dalam set.
 

Persyaratan

Persyaratan Nilai
Target Platform Universal
Header ntifs.h (termasuk Ntifs.h)
Pustaka NtosKrnl.lib
DLL NtosKrnl.exe

Lihat juga

CcSetAdditionalCacheAttributes

CcUninitializeCacheMap