ReadFile Function
Reads data from a file or overlapping object.
Syntax
BOOL ReadFile(
HANDLE hFile,
LPVOID lpBuffer,
DWORD nNumberOfBytesToRead,
LPDWORD lpNumberOfBytesRead,
LPOVERLAPPED lpOverlapped
);
Parameters
Parameter | Description |
---|---|
hFile |
A handle to the file or I/O device (such as a pipe or communications resource) that is to be read. This handle must have been created by the CreateFile function with the GENERIC_READ access right. |
lpBuffer |
A pointer to the buffer that receives the data read from the file. |
nNumberOfBytesToRead |
The maximum number of bytes to be read. If this parameter is zero and the file is opened in non-overlapping mode, the function returns TRUE and zero bytes read. |
lpNumberOfBytesRead |
A pointer to a 32-bit variable that receives the number of bytes read by this function. If this parameter is NULL and hFile is a handle to a file, the function might fail and return FALSE . If this parameter is NULL and hFile is a handle to a pipe or communications resource, the function returns TRUE and zero bytes read. |
lpOverlapped |
A pointer to an OVERLAPPED structure that is required if the file handle is opened with FILE_FLAG_OVERLAPPED . For files opened with FILE_FLAG_OVERLAPPED , the offset in the OVERLAPPED structure is used to specify where to start reading data from the file. |
Return Value
Value | Description |
---|---|
TRUE |
The read operation completed successfully. If lpNumberOfBytesRead is not NULL , the value it contains indicates the actual number of bytes read. |
FALSE |
The function failed. To get extended error information, call GetLastError . |
Remarks
To read from a file, you must first create the file or open an existing file with the CreateFile
function. The handle returned by CreateFile
must be opened with the GENERIC_READ
access right.
If lpOverlapped
is NULL
, the read operation starts at the current file position and is a blocking operation. The function does not return until the read operation has completed.
If lpOverlapped
is not NULL
, the read operation is a non-blocking operation. The file handle must have been opened with FILE_FLAG_OVERLAPPED
. If the read operation cannot be completed immediately, ReadFile
returns FALSE
and GetLastError
returns ERROR_IO_PENDING
. The actual read operation occurs asynchronously.
When reading from a communications device, nNumberOfBytesToRead
should be less than or equal to the size of the input buffer specified when the device was created.