Краткий обзор (если вы действительно хотите понять все детали, вам придется ознакомиться со стандартами, которые все доступны онлайн):
Протокол USB для устройств хранения более или менее идентичен командам, которые использовались для устройств SCSI . Таким образом, у вас есть команды для чтения и записи блоков и куча других команд. Среди них - READ CAPACITY(16)
(16 означает, что команда имеет длину 16 байт, более ранний вариант имел длину всего 10 байт), которая возвращает, помимо некоторой другой информации, как размер логических блоков, так и количество логических блоков. за физический блок.
Так вот, как ОС знает о логическом и физическом размере блока. Информация об ответе сохраняется во встроенном программном обеспечении контроллера, а не на носителе данных.
Теперь может случиться так, что для жестких дисков USB, которые состоят из SATA-накопителя и чипа моста USB-SATA, этот чип моста содержит ошибки и неправильно перенаправляет ответ команды READ CAPACITY
(у меня есть диск с таким чипом, и я подтвердил получить другой ответ через SATA для того же диска). В этом случае, даже если жесткий диск правильно утверждает, что имеет физический размер блока 2048, чип моста искажает этот ответ, поэтому ОС возвращает идентичный физический и логический размер блока обратно. Так что это обычная причина для ситуации, когда сообщаемый размер блока неправильный.
Для флеш-накопителей USB ситуация снова другая: за мостом нет SATA-накопителя, контроллер и флэш-ПЗУ на USB-накопителе образуют плотный блок, а если контроллер лжет о размере физического блока, то он лжет по этому поводу - ничего не поделаешь. На самом деле, вы даже не будете сейчас врать, потому что, хотя флэш-ПЗУ имеет блоки стирания, которые оправдывают "физический размер блока", вы не знаете их размера.
Из вашего вопроса было не совсем понятно, говорите ли вы о жестких дисках USB или флэш-дисках USB - для современных жестких дисков можно предположить, что они имеют физический размер блока 2048, для флэш-дисков никто ничего не может принять, поэтому ваше требование "Размер физического блока составляет 2048" в этом случае немного сомнительно, если вы не можете объяснить, откуда вы это знаете.
И, наконец, «дескриптор USB-устройства» является частью самого протокола USB и совершенно другой вещью.