Función CcInitializeCacheMap (ntifs.h)
Los sistemas de archivos llaman a la rutina CcInitializeCacheMap para almacenar en caché un archivo.
Sintaxis
void CcInitializeCacheMap(
[in] PFILE_OBJECT FileObject,
[in] PCC_FILE_SIZES FileSizes,
[in] BOOLEAN PinAccess,
[in] PCACHE_MANAGER_CALLBACKS Callbacks,
[in] PVOID LazyWriteContext
);
Parámetros
[in] FileObject
Puntero a un objeto de archivo para el archivo.
[in] FileSizes
Puntero a una estructura de CC_FILE_SIZES que contiene AllocationSize, FileSize y ValidDataLength para el archivo. Esta estructura se define de la siguiente manera:
typedef struct _CC_FILE_SIZES {
LARGE_INTEGER AllocationSize;
LARGE_INTEGER FileSize;
LARGE_INTEGER ValidDataLength;
} CC_FILE_SIZES, *PCC_FILE_SIZES;
Miembro | Significado |
---|---|
AllocationSize | Nuevo tamaño de objeto de sección para el archivo. Se omite si es menor o igual que el tamaño de sección actual. |
FileSize | Nuevo tamaño de archivo para el archivo. |
ValidDataLength | Nueva longitud de datos válida para el archivo. |
[in] PinAccess
Se establece en TRUE si se usarán rutinas CcPinXxx en el archivo.
[in] Callbacks
Puntero a una estructura asignada desde un grupo no paginado, que contiene puntos de entrada de rutinas de devolución de llamada proporcionadas por el autor de la llamada y escritura subyacente. Esta estructura y sus miembros se definen de la siguiente manera:
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
Puntero a la información de contexto que se va a pasar a las rutinas de devolución de llamada especificadas en Devoluciones de llamada.
Valor devuelto
None
Observaciones
CcInitializeCacheMap crea las estructuras de datos necesarias para el almacenamiento en caché de datos de archivos.
Si se produce algún error, CcInitializeCacheMap genera una excepción de estado para ese error en particular. Por ejemplo, si se produce un error de asignación de grupo, CcInitializeCacheMap genera una excepción STATUS_INSUFFICIENT_RESOURCES. Por lo tanto, para obtener control si se produce un error, el controlador debe encapsular la llamada a CcInitializeCacheMap en una instrucción try-except o try-finally .
Los sistemas de archivos deben llamar a CcInitializeCacheMap para almacenar en caché un archivo antes de usar cualquier otra rutina de administrador de caché en el archivo, a menos que el archivo se haya creado con el almacenamiento en caché de datos deshabilitado. En la mayoría de los sistemas de archivos, el almacenamiento en caché de archivos está habilitado de forma predeterminada, pero se puede deshabilitar estableciendo la marca FILE_NO_INTERMEDIATE_BUFFERING en TRUE en las opciones de creación de archivos.
Después de llamar a CcInitializeCacheMap, el sistema de archivos puede llamar a CcSetAdditionalCacheAttributes para deshabilitar la lectura anticipada o la escritura subyacente, si lo desea.
Al cerrar un archivo, todos los sistemas de archivos que admiten el almacenamiento en caché de archivos deben llamar a CcUninitializeCacheMap en ese archivo, tanto si el archivo está almacenado en caché como si no. Incluso si el archivo se creó con el almacenamiento en caché deshabilitado, el sistema de archivos todavía debe llamar a CcUninitializeCacheMap.
La macro CcIsFileCached determina si un archivo está almacenado en caché o no.
BOOLEAN CcIsFileCached(
[in] PFILE_OBJECT FileObject
);
Parámetros
FileObject[in] [in]
Puntero a un objeto de archivo para el archivo.
Valor devuelto
Devuelve TRUE si el archivo se almacena en caché; en caso contrario, FALSE .
Requisitos
Requisito | Value |
---|---|
Plataforma de destino | Universal |
Encabezado | ntifs.h (incluya Ntifs.h) |
Library | NtosKrnl.lib |
Archivo DLL | NtosKrnl.exe |