// ntdddisk.h
typedef struct _REASSIGN_BLOCKS {
USHORT Reserved;
USHORT Count;
ULONG BlockNumber[1];
} REASSIGN_BLOCKS, *PREASSIGN_BLOCKS;
View the official Windows Driver Kit DDI reference// winioctl.h
typedef struct _REASSIGN_BLOCKS {
WORD Reserved;
WORD Count;
DWORD BlockNumber[1];
} REASSIGN_BLOCKS, *PREASSIGN_BLOCKS;
View the official Win32 API referenceNo description available.
The REASSIGN_BLOCKS structure is used in conjunction with the IOCTL_DISK_REASSIGN_BLOCKS request to instruct a disk device to reassign the block numbers of the indicated bad blocks to good blocks.
ReservedReserved for system use.
CountContains the number of blocks in the array pointed to by BlockNumber to reassign.
BlockNumberContains an array of block numbers corresponding to damaged blocks. These numbers will be reassigned to good blocks taken from the device's spare block pool.
Contains disk block reassignment data. This is a variable length structure where the last member is an array of block numbers to be reassigned. It is used by the IOCTL_DISK_REASSIGN_BLOCKS control code.
ReservedThis member is reserved. Do not use it. Set it to zero.
CountThe number of blocks to be reassigned.
This is the number of elements that are in the BlockNumber member array.
BlockNumberAn array of Count block numbers, one for each block to be reassigned.
The REASSIGN_BLOCKS structure only supports drives where the Logical Block Address (LBA) is a 4-byte value (typically up to 2 TB).
For larger drives the REASSIGN_BLOCKS_EX structure that is used with the IOCTL_DISK_REASSIGN_BLOCKS_EX control code supports 8-byte LBAs.
For device compatibility, the IOCTL_DISK_REASSIGN_BLOCKS control code and REASSIGN_BLOCKS structure should be used where possible.