Влияет ли MaximumTransferLength (информация через STORAGE_ADAPTER_DESCRIPTOR) на ReadFile (Handle, ..); - PullRequest
0 голосов
/ 21 марта 2019

На каком уровне влияют ограничения драйвера, такие как MaximumTransferLength и AlignmentMask (например, которые можно получить с помощью DeviceIoControl (Handle, IOCTL_STORAGE_QUERY_PROPERTY, .. ) ;?

Я знаю, что когда я отправляю команды SCSI (используя DeviceIoControl(Handle, IOCTL_SCSI_PASS_THROUGH, ..) ;, это кажется важным, поэтому я придерживаюсь MaximumTransferLength и AlignmentMask, чтобы убедиться, что все работает гладко.

Но когда я использую ReadFile(Handle, ..) ;, например, я обнаруживаю, что могу передать 256 КБ (например) за одно чтение (например) с USB-накопителя, для которого драйвер говорит, что MaximumTransferLength равно 64 КБ.

Можно ли предположить, что ReadFile(Handle, ..) ; находится на уровне, когда функция Windows внутренне придерживается ограничений драйвера и помещает данные в буфер в соответствии с запросом? Так что в основном ReadFile(Handle, ..) ; невосприимчив к упомянутым ограничениям драйвера?

Или хотя бы для ограничения MaximumTransferLength?

PS. Handle извлекается либо для PhysicalDrive, либо для буквы диска.

Или на поведение ReadFile() также влияет тип Handle? Например, устройство против файла в файловой системе? Не то чтобы я сам видел разницу (сейчас тестирую с использованием Windows 10).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...