Microsoft Windows CE 3.0  

ReadFile

Important:
This is retired content. This content is outdated and is no longer being maintained. It is provided as a courtesy for individuals who are still using these technologies. This content may contain URLs that were valid when originally published, but now link to sites or pages that no longer exist.

This function reads data from a file, starting at the position indicated by the file pointer. After the read operation has been completed, the file pointer is adjusted by the number of bytes actually read.

BOOL
ReadFile(
HANDLE
hFile
,
LPVOID
lpBuffer
,
DWORD
nNumberOfBytesToRead
,
LPDWORD
lpNumberOfBytesRead
,
LPOVERLAPPED
lpOverlapped
);

Parameters

hFile
[in] Handle to the file to be read. The file handle must have been created with GENERIC_READ access to the file. This parameter cannot be a socket handle.
lpBuffer
[out] Pointer to the buffer that receives the data read from the file.
nNumberOfBytesToRead
[in] Number of bytes to be read from the file.
lpNumberOfBytesRead
[out] Pointer to the number of bytes read. ReadFilesets this value to zero before doing any work or error checking.
lpOverlapped
[in] Unsupported; set to NULL.

Return Values

Nonzero indicates success. Zero indicates failure. To get extended error information, call GetLastError.

The ReadFilefunction returns when one of the following is true: the number of bytes requested has been read or an error occurs.

If the return value is nonzero and the number of bytes read is zero, the file pointer was beyond the current end of the file at the time of the read operation.

Remarks

If part of the file is locked by another process and the read operation overlaps the locked portion, this function fails.

Accessing the input buffer while a read operation is using the buffer may lead to corruption of the data read into that buffer. Applications must not read from, write to, reallocate, or free the input buffer that a read operation is using until the read operation completes.

When reading from a communications device, the behavior of ReadFileis governed by the current communication time-outs as set and retrieved using the SetCommTimeoutsand GetCommTimeoutsfunctions. Unpredictable results can occur if you fail to set the time-out values. For more information about communication time-outs, see COMMTIMEOUTS.

The ReadFilefunction may fail and return ERROR_INVALID_USER_BUFFER or ERROR_NOT_ENOUGH_MEMORY whenever there are too many outstanding asynchronous I/O requests.

When a synchronous read operation reaches the end of a file, ReadFilereturns TRUE and sets * lpNumberOfBytesReadto zero. Windows CE does not support asynchronous read operations on files. The following sample code tests for end-of-file for a synchronous read operation:

// Attempt a synchronous read operation. bResult
= ReadFile(hFile, &inBuffer, nBytesToRead, &nBytesRead,
NULL) ; // Check for end of file. if (bResult && nBytesRead
== 0, ) { // we're at the end of the file }

Requirements

Runs on Versions Defined in Include Link to
Windows CE OS 1.0 and later Winbase.h   Coredll.lib, Fsmain.lib
Note   This API is part of the complete Windows CE OS package as provided by Microsoft. The functionality of a particular platform is determined by the original equipment manufacturer (OEM) and some devices may not support this API.

See Also

CreateFile, GetCommTimeouts, SetCommTimeouts, WriteFile, COMMTIMEOUTS