Windows Win32Arquivos & E/Skernel32.dll
ReadFile
Lê dados de um arquivo ou dispositivo referenciado por um HANDLE, de forma síncrona ou assíncrona (overlapped).
Descrição
Com um handle aberto com FILE_FLAG_OVERLAPPED e uma struct OVERLAPPED preenchida, a leitura é assíncrona e a conclusão é observada via GetOverlappedResult, um I/O Completion Port, ou uma rotina de conclusão (ReadFileEx).
Header:
fileapi.hDLL: kernel32.dllNative API: NtReadFileAssinatura
BOOL ReadFile(
HANDLE hFile,
LPVOID lpBuffer,
DWORD nNumberOfBytesToRead,
LPDWORD lpNumberOfBytesRead,
LPOVERLAPPED lpOverlapped
);Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| hFile | HANDLE | Handle do arquivo/dispositivo, aberto com acesso de leitura. |
| lpBuffer | LPVOID | Buffer de destino. |
| nNumberOfBytesToRead | DWORD | Número máximo de bytes a ler. |
| lpNumberOfBytesRead | LPDWORD | Recebe o número de bytes efetivamente lidos (ignorado em modo overlapped puramente assíncrono). |
| lpOverlapped | LPOVERLAPPED | Estrutura para I/O assíncrono, ou NULL para I/O síncrono. |
Valor de retorno
Diferente de zero em sucesso; 0 em erro (consulte GetLastError). Retornar TRUE com 0 bytes lidos indica fim de arquivo.
Códigos de erro (GetLastError)
- ERROR_HANDLE_EOF(38)
- Fim do arquivo alcançado.
- ERROR_IO_PENDING(997)
- A operação de E/S sobreposta (overlapped) foi enfileirada e será concluída de forma assíncrona.
- ERROR_INVALID_HANDLE(6)
- O identificador (handle) informado é inválido.
- ERROR_BROKEN_PIPE(109)
- O pipe foi encerrado (broken pipe).
Relacionadas
Equivalente em Linux x86_64