Мне нужно определить, является ли данный файл .dll или .exe 32-битным или 64-битным
На данный момент у меня есть только одно решение: прочитать заголовок PE из указанного файла и взять оттуда поле «Машина».
(Спецификация: Спецификация формата исполняемого файла Microsoft Common и файла общего объекта (файл .docx) в разделе "3.3. Заголовок файла COFF (объект и изображение)")
Это поле может принимать до 20 значений. Три из них:
IMAGE_FILE_MACHINE_I386 ( == 32bit )
IMAGE_FILE_MACHINE_IA64 ( == 64bit )
IMAGE_FILE_MACHINE_AMD64 ( == 64bit )
Мои вопросы:
1) Правильно ли построено отображение «машина» на битность, или я что-то упустил? Есть ли другие предостережения?
2) Есть ли более простой способ определения битности 32/64 (вероятно, какое-то конкретное поле в формате PE, которое я не заметил, или какая-то специальная системная функция)?