Função CcCopyWriteEx (ntifs.h)

A rotina CcCopyWriteEx copia dados de um buffer de usuário para um arquivo armazenado em cache. A contagem de bytes de E/S da operação é cobrada para o thread emissor.

Sintaxe

BOOLEAN CcCopyWriteEx(
  [in] PFILE_OBJECT   FileObject,
  [in] PLARGE_INTEGER FileOffset,
  [in] ULONG          Length,
  [in] BOOLEAN        Wait,
  [in] PVOID          Buffer,
  [in] PETHREAD       IoIssuerThread
);

Parâmetros

[in] FileObject

Um ponteiro para um objeto de arquivo para o arquivo armazenado em cache no qual os dados devem ser gravados.

[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 gravados.

[in] Wait

Defina como TRUE se o chamador puder ser colocado em um estado de espera até que todos os dados sejam copiados, caso contrário, FALSE.

[in] Buffer

Um ponteiro para o buffer do qual os dados devem ser copiados.

[in] IoIssuerThread

O thread que emite a solicitação de gravação. Para um sistema de arquivos com a contabilidade de E/S de disco habilitada, esse é o thread ao qual a E/S é cobrada. Se IoIssuerThread for NULL, a E/S será cobrada no thread atual.

Retornar valor

A rotina CcCopyWriteEx retornará TRUE se os dados tiverem sido copiados com êxito, caso contrário, FALSE.

Comentários

Se Wait for TRUE, CcCopyWriteEx será garantido para concluir a solicitação de cópia e retornar TRUE. 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 estado de espera até que todas as páginas necessárias sejam residentes e os dados possam ser copiados.

Se Wait for FALSE, CcCopyWriteEx 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 ou se o sinalizador FO_WRITE_THROUGH estiver definido no objeto de arquivo.

Se ocorrer alguma falha, CcCopyWriteEx gerará uma exceção status para essa falha específica. Por exemplo, se ocorrer uma falha de alocação de pool, CcCopyWriteEx gerará uma exceção com o STATUS_INSUFFICIENT_RESOURCES status; se ocorrer um erro de E/S, CcCopyWriteEx 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 CcCopyWriteEx em uma instrução try-except ou try-finally .

Para armazenar em cache um arquivo, use CcInitializeCacheMap.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 8
Plataforma de Destino Universal
Cabeçalho ntifs.h (inclua Ntifs.h, FltKernel.h)
Biblioteca NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

Confira também

CcInitializeCacheMap