Funzione CcInitializeCacheMap (ntifs.h)
I file system chiamano la routine CcInitializeCacheMap
Sintassi
void CcInitializeCacheMap(
[in] PFILE_OBJECT FileObject,
[in] PCC_FILE_SIZES FileSizes,
[in] BOOLEAN PinAccess,
[in] PCACHE_MANAGER_CALLBACKS Callbacks,
[in] PVOID LazyWriteContext
);
Parametri
[in] FileObject
Puntatore a un oggetto file per il file.
[in] FileSizes
Puntatore a una struttura di CC_FILE_SIZES contenente AllocationSize, FileSizee ValidDataLength per il file. Questa struttura è definita come segue:
typedef struct _CC_FILE_SIZES {
LARGE_INTEGER AllocationSize;
LARGE_INTEGER FileSize;
LARGE_INTEGER ValidDataLength;
} CC_FILE_SIZES, *PCC_FILE_SIZES;
Membro | Significato |
---|---|
AllocationSize | Nuove dimensioni dell'oggetto sezione per il file. Ignorato se minore o uguale alla dimensione corrente della sezione. |
FileSize | Nuove dimensioni del file. |
ValidDataLength | Nuova lunghezza di dati valida per il file. |
[in] PinAccess
Impostare su TRUE se nel file verranno utilizzate routine CcPinXxx.
[in] Callbacks
Puntatore a una struttura allocata da un pool non di paging, contenente i punti di ingresso delle routine di callback fornite dal chiamante e write-behind. Questa struttura e i relativi membri sono definiti come segue:
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
Puntatore alle informazioni di contesto da passare alle routine di callback specificate in callback.
Valore restituito
Nessuno
Osservazioni
CcInitializeCacheMap crea le strutture di dati necessarie per la memorizzazione nella cache dei dati dei file.
Se si verifica un errore, CcInitializeCacheMap genera un'eccezione di stato per quel particolare errore. Ad esempio, se si verifica un errore di allocazione del pool, CcInitializeCacheMap genera un'eccezione STATUS_INSUFFICIENT_RESOURCES. Pertanto, per ottenere il controllo se si verifica un errore, il driver deve eseguire il wrapping della chiamata a CcInitializeCacheMap in un try-except o istruzione try-finally.
I file system devono chiamare CcInitializeCacheMap per memorizzare nella cache un file prima di usare qualsiasi altra routine di gestione cache nel file, a meno che il file non sia stato creato con la memorizzazione nella cache dei dati disabilitata. Nella maggior parte dei file system la memorizzazione nella cache dei file è abilitata per impostazione predefinita, ma può essere disabilitata impostando il flag FILE_NO_INTERMEDIATE_BUFFERING su TRUE nelle opzioni di creazione file.
Dopo aver chiamato CcInitializeCacheMap, il file system può chiamare CcSetAdditionalCacheAttributes per disabilitare read-ahead o write-behind, se necessario.
Quando si chiude un file, ogni file system che supporta la memorizzazione nella cache dei file deve chiamare CcUninitializeCacheMap su tale file, indipendentemente dal fatto che il file sia memorizzato nella cache o meno. Anche se il file è stato creato con la memorizzazione nella cache disabilitata, il file system deve comunque chiamare CcUninitializeCacheMap.
La macro CcIsFileCached
BOOLEAN CcIsFileCached(
[in] PFILE_OBJECT FileObject
);
Parametri
FileObject[in] [in]
Puntatore a un oggetto file per il file.
Valore restituito
Restituisce TRUE se il file viene memorizzato nella cache, FALSE in caso contrario.
Fabbisogno
Requisito | Valore |
---|---|
piattaforma di destinazione | Universale |
intestazione |
ntifs.h (include Ntifs.h) |
libreria |
NtosKrnl.lib |
dll | NtosKrnl.exe |