Таким образом, вы в основном хотите определить, является ли файл файлом ISO или нет, а не столько проверить файл, чтобы убедиться, что он действителен (например, неполный, поврежденный, ...)?
Нет простого способа сделать это, и, конечно же, нет функции С# (о которой я знаю), которая может это сделать.
Лучший способ приблизиться к этому — угадать количество байтов на блок, хранящийся в ISO. Угадайте или просто попробуйте все возможные ситуации одну за другой, если только у вас нет связанного файла CUE, в котором фактически хранится эта информация. PS. Если ISO сопровождается одноименным файлом .CUE, вы в любом случае можете быть уверены на 99,99%, что это файл ISO.
Размеры будут 2048 (пользовательские данные) или 2352 (необработанные или аудио) байты на блок. Возможны и другие размеры!!!! Я только что упомянул два самых распространенных. В случае 2352 байтов на блок пользовательские данные начинаются со смещения в этом блоке. Обычно 16 или 24 в зависимости от режима.
Затем я попытался бы обнаружить файловые системы CD/DVD. Предположим, что образ начинается с сектора 0 (хотя в целях безопасности вы можете выполнить сканирование, которое предполагает, например, от -150 до 16).
Для этого вам нужно изучить особенности ISO9660 и UDF. Сектора 16, 256 и т.д. будет интересно проверить!!
В итоге это непростая задача, и вам нужно будет ознакомиться со структурой оптических дисков и файловыми системами оптических дисков (ISO9660, UDF, но, возможно, также HFS и даже FAT на BD).
Если вы копаетесь в этом, я настоятельно рекомендую получить IsoBuster (www.isobuster.com), чтобы помочь вам увидеть, что размер на блок, какие файловые системы существуют, для проверки различных ключевых блоков и т. д.
person
Peter
schedule
04.08.2013