# aio_read

Performs an asynchronous read operation.

## Syntax

int aio_read(struct aiocb *aiocbp);

## Description

The aio_read() function requests an asynchronous read operation, calling the function,

    "ReadFile(hFile, lpBuffer, nNumberOfBytesToRead, lpNumberOfBytesRead, NULL);"

where,

- `hFile` is given by aiocbp->aio_fildes
- `lpBuffer` is given by aiocbp->aio_buf
- `nNumberOfBytesToRead` is given by aiocbp->aio_nbytes

Use the function aio_return() to retrieve the actual bytes read in `lpNumberOfBytesRead`.

Use the extension aiocb->aio_offset == (intptr_t)-1 to start the read operation after the last read record. This extension avoids extra file positioning and enhances performance.

## Returns

0: On success

-1: On error

To get the correct error code, use errno. To get the error that occurred during asynchronous read operation, use aio_error() function.

Parent topic: Intel's C++ Asynchronous I/O Library for Windows* Operating Systems

## See Also

Example Code for aio_read()