EFI_STATUS EFIAPI FvbProtocolRead ( IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This, IN EFI_LBA Lba, IN UINTN Offset, IN OUT UINTN *NumBytes, IN UINT8 *Buffer ) /*++ Routine Description: Reads data beginning at Lba:Offset from FV. The Read terminates either when *NumBytes of data have been read, or when a block boundary is reached. *NumBytes is updated to reflect the actual number of bytes written. The write opertion does not include erase. This routine will attempt to write only the specified bytes. If the writes do not stick, it will return an error. Arguments: This - Calling context Lba - Block in which to begin Read Offset - Offset in the block at which to begin Read NumBytes - On input, indicates the requested write size. On output, indicates the actual number of bytes Read Buffer - Buffer containing source data for the Read. Returns: EFI_SUCCESS - The firmware volume was read successfully and contents are in Buffer EFI_BAD_BUFFER_SIZE - Read attempted across a LBA boundary. On output, NumBytes contains the total number of bytes returned in Buffer EFI_ACCESS_DENIED - The firmware volume is in the ReadDisabled state EFI_DEVICE_ERROR - The block device is not functioning correctly and could not be read EFI_INVALID_PARAMETER - NumBytes or Buffer are NULL **/ { EFI_FW_VOL_BLOCK_DEVICE *FvbDevice; FvbDevice = FVB_DEVICE_FROM_THIS (This); return FvbReadBlock (FvbDevice->Instance, Lba, Offset, NumBytes, Buffer, mFvbModuleGlobal, EfiGoneVirtual ()); }
/** Reads data beginning at Lba:Offset from FV. The Read terminates either when *NumBytes of data have been read, or when a block boundary is reached. *NumBytes is updated to reflect the actual number of bytes written. The write opertion does not include erase. This routine will attempt to write only the specified bytes. If the writes do not stick, it will return an error. @param[in] This Calling context @param[in] Lba Block in which to begin write @param[in] Offset Offset in the block at which to begin write @param[in, out] NumBytes On input, indicates the requested write size. On output, indicates the actual number of bytes written @param[in] Buffer Buffer containing source data for the write. Returns: @retval EFI_SUCCESS The firmware volume was read successfully and contents are in Buffer @retval EFI_BAD_BUFFER_SIZE Read attempted across a LBA boundary. On output, NumBytes contains the total number of bytes returned in Buffer @retval EFI_ACCESS_DENIED The firmware volume is in the ReadDisabled state @retval EFI_DEVICE_ERROR The block device is not functioning correctly and could not be read @retval EFI_INVALID_PARAMETER NumBytes or Buffer are NULL **/ EFI_STATUS EFIAPI FvbProtocolRead ( IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This, IN EFI_LBA Lba, IN UINTN Offset, IN OUT UINTN *NumBytes, OUT UINT8 *Buffer ) { EFI_FW_VOL_BLOCK_DEVICE *FvbDevice; EFI_STATUS Status; FvbDevice = FVB_DEVICE_FROM_THIS (This); Status = FvbReadBlock (FvbDevice->Instance, Lba, Offset, NumBytes, Buffer); return Status; }