Compartir a través de


Función CcCopyRead (ntifs.h)

La rutina CcCopyRead copia los datos de un archivo almacenado en caché en un búfer de usuario.

Sintaxis

BOOLEAN CcCopyRead(
  [in]  PFILE_OBJECT     FileObject,
  [in]  PLARGE_INTEGER   FileOffset,
  [in]  ULONG            Length,
  [in]  BOOLEAN          Wait,
  [out] PVOID            Buffer,
  [out] PIO_STATUS_BLOCK IoStatus
);

Parámetros

[in] FileObject

Puntero a un objeto de archivo para el archivo almacenado en caché desde el que se van a leer los datos.

[in] FileOffset

Puntero a una variable que especifica el desplazamiento de bytes inicial dentro del archivo almacenado en caché.

[in] Length

Longitud en bytes de los datos que se van a leer.

[in] Wait

Se establece en TRUE si el autor de la llamada se puede colocar en un estado de espera hasta que se copien todos los datos; de lo contrario, FALSE .

[out] Buffer

Puntero a un búfer en el que se van a copiar los datos.

[out] IoStatus

Puntero a una estructura asignada por el autor de la llamada que recibe el estado de finalización final e información sobre la operación. Si no todos los datos se copian correctamente, IoStatus.Information contiene el número real de bytes que se copiaron.

Valor devuelto

La rutina CcCopyRead devuelve TRUE si los datos se copiaron correctamente; de lo contrario, FALSE.

Comentarios

Si Wait es TRUE, se garantiza que CcCopyRead complete la solicitud de copia y devuelva TRUE. Si las páginas necesarias del archivo almacenado en caché ya residen en la memoria, los datos se copiarán inmediatamente y no se producirá ningún bloqueo. Si las páginas necesarias no están residentes, el autor de la llamada se pondrá en un estado de espera hasta que se hayan hecho residentes todas las páginas necesarias y se puedan copiar los datos.

Si Wait es FALSE, CcCopyRead se negará a bloquear y devolverá FALSE, si las páginas necesarias del archivo almacenado en caché aún no residen en la memoria.

FileOffset más Length debe ser menor o igual que el tamaño del archivo almacenado en caché o se producirá un error de aserción.

Si se produce algún error, CcCopyRead genera una excepción de estado para ese error en particular. Por ejemplo, si se produce un error de asignación de grupo, CcCopyRead genera una excepción de STATUS_INSUFFICIENT_RESOURCES; Si se produce un error de E/S, CcCopyRead genera la excepción de estado del error de E/S. Por lo tanto, para obtener control si se produce un error, el controlador debe encapsular la llamada a CcCopyRead en una instrucción try-except o try-finally .

Para almacenar en caché un archivo, use CcInitializeCacheMap.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 2000
Plataforma de destino Universal
Encabezado ntifs.h (incluya Ntifs.h, FltKernel.h)
Library NtosKrnl.lib
Archivo DLL NtosKrnl.exe
IRQL <= APC_LEVEL

Consulte también

CcFastCopyRead

CcInitializeCacheMap

CcReadAhead

CcScheduleReadAhead

CcSetAdditionalCacheAttributes

CcSetReadAheadGranularity