---
title: READ_10
framework: scsiperipheralsdriverkit
role: symbol
role_heading: Function
platforms: [driverkit 22.0+]
path: scsiperipheralsdriverkit/read_10
---

# READ_10

Fills a Command Descriptor Block (CDB) to perform a SCSI read command.

## Declaration

```occ
bool READ_10(SCSIDeviceOutParameters *request, UInt64 blockSize, UInt32 startBlock, UInt16 blockCount, UInt64 bufAddr, SCSIDeviceInParameters *response, UInt64 senseBufAddr);
```

## Parameters

- `request`: An object that contains the request information.
- `blockSize`: The block size, in bytes, for the data transfer.
- `startBlock`: The Logical Block Address (LBA) of the starting block.
- `blockCount`: The number of blocks to read.
- `bufAddr`: A buffer to receive the read data.
- `response`: An empty doc://com.apple.scsiperipheralsdriverkit/documentation/SCSIPeripheralsDriverKit/SCSIDeviceInParameters object. On return, the framework populates this object with the response information.
- `senseBufAddr`: The address of the sense buffer.

## Return Value

Return Value true if the call successfully fills the CDB; false, otherwise.

## Discussion

Discussion Use this method in your dext to prefill a 16-byte CDB for the standard READ10 SCSI command.

## See Also

### Creating common SCSI commands

- [TEST_UNIT_READY](scsiperipheralsdriverkit/test_unit_ready.md)
- [INQUIRY](scsiperipheralsdriverkit/inquiry.md)
- [REQUEST_SENSE](scsiperipheralsdriverkit/request_sense.md)
- [WRITE_10](scsiperipheralsdriverkit/write_10.md)
- [READ_CAPACITY](scsiperipheralsdriverkit/read_capacity.md)
