## pf_read

The pf_read function reads data from the file.

    FRESULT pf_read (
      void* buff,  /* [OUT] Pointer to the read buffer */
      UINT btr,    /* [IN]  Number of bytes to read */
      UINT* br     /* [OUT] Number of bytes read */
    );

#### Parameters

buff
  Pointer to the buffer to store the read data. A NULL specifies the destination is an outgoing stream.
btr
  Number of bytes to read.
br
  Pointer to the variable to return number of bytes read.

#### Return Values

FR_OK (0)
  The function succeeded.
FR_DISK_ERR
  The function failed due to a hard error in the disk function, a wrong FAT structure or an internal error.
FR_NOT_OPENED
  The file has not been opened.
FR_NOT_ENABLED
  The volume has not been mounted.

#### Description

The file read/write pointer in the file system object advances in number of bytes read. After the function succeeded, `*br` should be checked to detect end of file. In case of `*br < btr`, it means the read pointer reached end of file during read operation.

If a NULL is given to the `buff`, the read bytes will be forwarded to the outgoing stream instead of the memory. The streaming function will be typically built-in the `disk_readp()` function.

#### QuickInfo

Available when `_USE_READ == 1`.

#### References

`pf_open, pf_write, FATFS`

Return