Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Single Post  Topic: PE Viewer 3.0 
Author Message
iteg



PostPosted: Sat Nov 23, 2024 14:20    Post subject: Reply with quote

1)
Quote:
Начнем явно с бага - на вкладке Ресурсы внизу дерева есть панель со столбцами "Свойство \ Значение" ... Чтобы полосы прокрутки не появлялись.

Да, знаю про это. Добавил в список для решения.
2)
Quote:
Ок, раз просто 1 это вроде как прямое указание на стандартный тип ресурса- пусть так и пишется

1 - это принятый Microsoft идентификатор, а не имя.
https://learn.microsoft.com/en-us/windows/win32/menurc/versioninfo-resource
Описание параметра "versionID" - "Version-information resource identifier. This value must be 1."
3)
Quote:
16 (16 (Version))

Формат вывода типа ресурса - "<оригинальный тип ресурса> (<интерпретируемый тип ресурса> (<текстовое имя интерпретируемого тип ресурса>))".
Во время построения дерева ресурсов плагин анализирует каждый тип ресурса и, если необходимо, задает новый.
Например, типа ресурса PNG нет, ресурс имеет тип RT_BINARY = 0 (не рассматриваем иконки), но я его интерпретирую как свой тип RT_PNG = 27. Получается - "0 (27 (PNG))".
Круглые скобки использую для отображения количества элементов или для расшифровки смысла значения перед ними.
С 1 по 25 константы стандартные, после 25 - мои.
RT_CURSOR, RT_STRING, RT_VERSION и т.д.
Стандартные константы описаны, если установлена Visual Studio, например, в:
C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\um\WinUser.h
4)
Quote:
Для раздела VS_FIXEDFILEINFO походу добавился вывод поля File Date

Это рудимент для старых ОС. Насколько помню, использовалось загрузчиком исполняемых файлов для решения проблемы версионности и зависимостей.
Структура tagVS_FIXEDFILEINFO в:
C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\um\verrsrc.h
или
https://learn.microsoft.com/en-us/previous-versions/ms915510(v%3dmsdn.10)
5)
Quote:
А вот данные про Язык и Кодовую страницу - нет, не понимаю.
Ведь из справок и глазками в редакторе RC-файла мы же четко поняли, что ВСЯ инфа о языке присутствует ЛИШЬ
внутри этого ресурса в полях секции "StringFileInfo" в заголовке BLOCK "lang-charset".

Описание структуры секции ресурсов:
https://learn.microsoft.com/en-us/windows/win32/debug/pe-format#the-rsrc-section
6)
Quote:
Ну и скобочках вижу Английский (США). А потом идет кодовая страница "0 - ANSI - кириллица"

Согласен, что сбивает понимание, но такой результат выдает ОС. "ANSI" - определяет 8-битную кодировку, "кириллица" - определяет использование "Cyrillic script" для таких языков как русский, украинский, белорусский, болгарский, сербская кириллица, македонский и т.д. Сопоставимо с Windows-1251.
По умолчанию поле CodePage в ресурсе 0.
7)
Quote:
А то и для Иконок вдруг появляются эти блоки, и инфа о том, что не вяжется с графический примитивами...

Каждый ресурс имеет "Level 3 - Language" и поле CodePage.
8 )
Quote:
НО когда мы зайдем в подпункты этого подменю - мы увидим раздельно "Свойство", раздельно ОПЯТЬ "Значение". Т.е. как бы масломасляное.

Этот элемент контекстного меню строится динамически и имена подэлементов меню берутся из названий колонок списочного элемента. "Копировать значение" это выполняемое действие, далее подэлемент меню "Значение" - это заголовок соответствующей колонки, из которой пользователь будет копировать данные.
9)
Quote:
Там вот НЕТ в таблицах языков 0 и 9!

Предполагаю, что это или рудименты или несут системное значение. Подстветку пока не реализовал.
10)
Quote:
НО правда по прежнему висит сугубо уже теоретический, но тем не менее вопрос - это как же они умудрились просрать справку, что по факту надо делать НЕ ТО, что там описано!?

Занимаясь разбором системных структур Windows ОС, понял, что на официальную справку полностью полагаться нельзя. Описания структур на сайте Microsoft часто содержат ошибки, неточности или только общее описание. Приходится сверять с описанием в h-ках, искать в других источниках, реверсировать приложения и системные модули и т.д.
11)
Quote:
НО! вот где и как вдруг оказалось расписанным, что именования ресурсов - ВСЕ имена ресурсов - имеют какой-то язык и кодостраницу?

Описание структуры секции ресурсов:
https://learn.microsoft.com/en-us/windows/win32/debug/pe-format#the-rsrc-section
12)
Quote:
Та самая панелька, что я описывал как имеющую баг относительно раздвигания ее размеров по высоте - кажется
становится все менее полезной?

Удобна при большом количестве элементов. Не надо запоминать идентификатор, менять режим отображения и искать в списке ресурсов для получения свойств.
12)
Quote:
Раскрываю этот один узел и вижу элемент.... А откуда у него имя "7"?

STRINGTABLE
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
BEGIN
0 "Test1"
11 "Test2"
16 "Test3"
100 "Test4"
101 "Test5"
<идентификатор строки> "строка"
END
Будет 3 блока: 1, 2 и 7.
Ресурсный компилятор для STRINGTABLE создает блоки по 16 элементов и автоматически проставляет блокам индексы/имена. Индексация начинается с 1.
Т.е. идентификаторы строк с 0 по 15 - это блок с индексом 1.
16 по 31 - это блок с индексом 2.
Например, берем строку с идентификатором 0xFE90 делим на 16 = 4073 + 1 = 4074 индекс блока.
View user's profile Send private message


Powered by phpBB © 2001, 2005 phpBB Group