2013-05-26 2 views
1

Я был под впечатлением, что ресурс VERSIONINFO является чисто изобретением Windows, однако при чтении documentation я наткнулся на VOS_DOS возможное значение fileos параметра VERSIONINFO определение определения ресурса. Аналогично, бинарный эквивалент, VS_FIXEDFILEINFO struct имеет dwFileOS член, который может иметь значение VOS_DOS, обозначая, что «Файл был разработан для MS-DOS.» (??).Могут ли бинарные файлы DOS MZ вообще иметь метаданные VERSIONINFO?

Как это может быть? Я думал, что в бинарном формате MZ просто нет места для таких метаданных ... Я что-то упускаю, например, поддержка VERSIONINFO в более крупных версиях MS-DOS и какие-то библиотеки для ее чтения?

+0

Ну ... файл может быть как действительным двоичным кодом DOS, так и действительным двоичным кодом Windows. Обычно это используется для того, чтобы предоставить исполняемому файлу Windows DOS-заглушку, которая просто печатает «запускать меня в Windows» или аналогичную, но я полагаю, что она может быть использована для предоставления исполняемого файла DOS заглушки Windows, которая просто печатает «запускать меня в DOS». Такой файл может содержать ресурс VERSIONINFO, и я полагаю, что 'VOS_DOS' будет логическим выбором для' fileos'. –

+0

Ресурсы не обязательно связаны с исполняемыми файлами. Это всего лишь двоичный формат, его можно хранить в любом месте. Например, файл .res. –

ответ

2

Нет стандарта для данных ресурсов для простых файлов MZ. Однако файлы NE и PE могут выполняться под DOS с помощью DOS extender. Я считаю, что сами Microsoft использовали Phar Lap в некоторых версиях Visual C, чтобы они могли запускать один и тот же исполняемый файл в Windows и DOS.

Похоже, что формат NE также использовался in early versions of MS DOS 4.0.