Função CcCopyRead (ntifs.h)
A rotina CcCopyRead copia dados de um arquivo armazenado em cache para um buffer de usuário.
Sintaxe
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
Um ponteiro para um objeto de arquivo para o arquivo armazenado em cache do qual os dados devem ser lidos.
[in] FileOffset
Um ponteiro para uma variável que especifica o deslocamento de bytes inicial dentro do arquivo armazenado em cache.
[in] Length
O comprimento em bytes dos dados a serem lidos.
[in] Wait
Defina como verdadeiro se o chamador puder ser colocado em um estado de espera até que todos os dados sejam copiados, FALSE caso contrário.
[out] Buffer
Um ponteiro para um buffer no qual os dados devem ser copiados.
[out] IoStatus
Um ponteiro para uma estrutura alocada por chamador 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 contém o número real de bytes que foram copiados.
Valor de retorno
A rotina de CcCopyRead retornará verdadeiro se os dados tiverem sido copiados com êxito, false caso contrário.
Observações
Se de espera for TRUE, ccCopyRead será garantido para concluir a solicitação de cópia e retornar verdadeiro. Se as páginas necessárias do arquivo armazenado em cache já estiverem residentes na memória, os dados serão copiados imediatamente e nenhum bloqueio ocorrerá. Se as páginas necessárias não forem residentes, o chamador será colocado em um estado de espera até que todas as páginas necessárias sejam residentes e os dados possam ser copiados.
Se de Espera for FALSE, CcCopyRead se recusará a bloquear e retornará FALSE, se as páginas necessárias do arquivo armazenado em cache ainda não estiverem residentes na memória.
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, CcCopyRead gerará uma exceção de status para essa falha específica. Por exemplo, se ocorrer uma falha de alocação de pool, CcCopyRead gerará uma exceção STATUS_INSUFFICIENT_RESOURCES; se ocorrer um erro de E/S, CcCopyRead gerará a exceção de status do erro de E/S. Portanto, para obter controle se ocorrer uma falha, o driver deverá encapsular a chamada para CcCopyRead em uma instrução try-except ou try-finally.
Para armazenar em cache um arquivo, use CcInitializeCacheMap.
Requisitos
Requisito | Valor |
---|---|
de cliente com suporte mínimo | Windows 2000 |
da Plataforma de Destino |
Universal |
cabeçalho | ntifs.h (inclua Ntifs.h, FltKernel.h) |
biblioteca | NtosKrnl.lib |
de DLL |
NtosKrnl.exe |
IRQL | <= APC_LEVEL |
Consulte também
ccScheduleReadAhead