Função CcFastCopyRead (ntifs.h)

A rotina CcFastCopyRead executa uma leitura rápida de cópia de um arquivo armazenado em cache para um buffer na memória.

Sintaxe

void CcFastCopyRead(
  [in]  PFILE_OBJECT     FileObject,
  [in]  ULONG            FileOffset,
  [in]  ULONG            Length,
  [in]  ULONG            PageCount,
  [out] PVOID            Buffer,
  [out] PIO_STATUS_BLOCK IoStatus
);

Parâmetros

[in] FileObject

Ponteiro para um objeto de arquivo para o arquivo armazenado em cache do qual os dados devem ser lidos.

[in] FileOffset

Iniciando o deslocamento de bytes dentro do arquivo armazenado em cache.

[in] Length

Comprimento em bytes dos dados a serem lidos.

[in] PageCount

Número de páginas estendidas pela leitura.

[out] Buffer

Ponteiro para um buffer no qual os dados devem ser copiados.

[out] IoStatus

Ponteiro para uma estrutura que recebe o status de conclusão final e informações sobre a operação. Se nem todos os dados forem copiados com êxito, IoStatus.Information conterá o número real de bytes que foram copiados.

Retornar valor

Nenhum

Comentários

CcFastCopyRead é uma versão mais rápida do CcCopyRead. Ele difere de CcCopyRead nos seguintes aspectos:

  • FileOffset é um ULONG, não um PLARGE_INTEGER.

  • Não há nenhum parâmetro Wait . O chamador deve ser capaz de inserir um estado de espera até que todos os dados sejam copiados.

  • CcFastCopyRead não retorna um BOOLEAN para indicar se a operação de leitura foi bem-sucedida.

FileOffset mais Length deve ser menor ou igual ao tamanho do arquivo armazenado em cache ou ocorrerá uma falha de asserção.

Se ocorrer alguma falha, CcFastCopyRead gerará uma exceção status para essa falha específica. Por exemplo, se ocorrer uma falha de alocação de pool, CcFastCopyRead gerará uma exceção STATUS_INSUFFICIENT_RESOURCES; se ocorrer um erro de E/S, CcFastCopyRead gerará a exceção status do erro de E/S. Portanto, para obter controle se ocorrer uma falha, o driver deverá encapsular a chamada para CcFastCopyRead em uma instrução try-except ou try-finally .

Para armazenar em cache um arquivo, use CcInitializeCacheMap.

Requisitos

Requisito Valor
Plataforma de Destino Universal
Cabeçalho ntifs.h (inclua Ntifs.h)
Biblioteca NtosKrnl.lib
DLL NtosKrnl.exe
IRQL < DISPATCH_LEVEL

Confira também

CcCopyRead

CcInitializeCacheMap

CcReadAhead

CcScheduleReadAhead

CcSetAdditionalCacheAttributes

CcSetReadAheadGranularity