UFS_UNIT_DESCRIPTOR structure (ufs.h)

The UFS_UNIT_DESCRIPTOR structure describes a generic unit descriptor.

Syntax

typedef struct {
  UCHAR  bLength;
  UCHAR  bDescriptorIDN;
  UCHAR  bUnitIndex;
  UCHAR  bLUEnable;
  UCHAR  bBootLunID;
  UCHAR  bLUWriteProtect;
  UCHAR  bLUQueueDepth;
  UCHAR  bPSASensitive;
  UCHAR  bMemoryType;
  UCHAR  bDataReliability;
  UCHAR  bLogicalBlockSize;
  UCHAR  qLogicalBlockCount[8];
  UCHAR  dEraseBlockSize[4];
  UCHAR  bProvisioningType;
  UCHAR  qPhyMemResourceCount[8];
  UCHAR  wContextCapabilities[2];
  UCHAR  bLargeUnitGranularity_M1;
  USHORT wLUMaxActiveHPBRegions;
  USHORT wHPBPinnedRegionStartIdx;
  USHORT wNumHPBPinnedRegions;
  ULONG  dLUNumWriteBoosterBufferAllocUnits;
} UFS_UNIT_DESCRIPTOR, *PUFS_UNIT_DESCRIPTOR;

Members

bLength

Specifies the length, in bytes, of this descriptor.

bDescriptorIDN

Specifies the type of the descriptor. This descriptor will have a value of UFS_DESC_UNIT_IDN.

bUnitIndex

Specifies unit index

bLUEnable

Specifies if the logic unit number (LUN) is enabled. If bLUEnable is equal to 0x00, the logical unit is disabled.

bBootLunID

bLUWriteProtect

Specifies if the logical unit is write-protected. Contains one of the following values:

Value Description
0x00 The logical unit is not write protected.
0x01 The logical unit is write protected.
0x02 The logical unit is permanently write protected.

bLUQueueDepth

Specifies the logical unit queue depth. Can be any value from 0x00 to 0xff.

bPSASensitive

Specifies if the logical unit is sensitive to soldering. Contains one of the following values:

Value Description
0x00 The logical unit is not sensitive to soldering.
0x01 The logical unit is sensitive to soldering.

bMemoryType

Specifies the desired memory type. The wSupportedMemoryTypes parameter in the UFS_GEOMETRY_DESCRIPTOR structure indicates which memory types are supported by the device.

bDataReliability

Specifies if the device is protected against a power failure during a write operation to the logical unit.

bLogicalBlockSize

Specifies the logical block size of the descriptor. Set the value of this equal to the corresponding value in dOptimalLogicalBlockSize of UFS_GEOMETRY_DESCRIPTOR for the specific logical unit memory type.

qLogicalBlockCount[8]

Specifies the total number of addressable logical blocks in the logical unit.

dEraseBlockSize[4]

Specifies the erase block size.

bProvisioningType

Specifies the provisioning type.

qPhyMemResourceCount[8]

Specifies the total physical memory resources available in the logical unit.

wContextCapabilities[2]

Specifies the number of contexts to be supported in each logical unit.

bLargeUnitGranularity_M1

Specifies the Large Unit granularity, minus one.

wLUMaxActiveHPBRegions

Specifies the maximum number of HPB regions assigned to the HPB logical unit.

wHPBPinnedRegionStartIdx

Specifies the HPB pinned region start offset.

wNumHPBPinnedRegions

Specifies the number of HPB pinned regions assigned to the HPB logical unit.

dLUNumWriteBoosterBufferAllocUnits

Specifies the number of logical unit WriteBooster buffer allocation units.

Remarks

bPSASensitive and dEraseBlockSize are updated automatically after device configuration.

Requirements

Requirement Value
Minimum supported client Windows 10, version 1709
Minimum supported server Windows Server 2016
Header ufs.h

See also