Виртуальная библиотека Delphi - [31]
>DD NAME RVA | INTEGER ID
>DD DATA ENTRY RVA | SUBDIR RVA
декларация в RXTypes.Pas:
>IMAGE_RESOURCE_DIRECTORY_ENTRY = packed record
> Name: DWORD; // Or ID: Word (Union)
> OffsetToData: DWORD;
>end;
Первое поле содержит либо `NAME RVA` — адрес строки (UNICODE) с именем, либо — `INTEGER ID` – целочисленный идентификатор. `INTEGER ID` может быть, например, одним из стандартных кодов типа ресурса или заданным пользователем кодом строки в таблице строк.
Самый старший бит второго поля (31-й бит) называется `Escape-флагом`. Если он установлен в `1`, считается что данная `DIR ENTRY` — ссылка на другой подкаталог ресурсов. Если сброшен в `0` — данная запись ссылка на данные ресурса. Понятно, при вычислении адреса этот бит всегда должен считаться `0`.
Строка, на которую указывает `NAME RVA`, очень похожа на паскалевскую short-string, только вместо байтов она состоит из 16-битные слов. Самое первое слово – длина строки, за ним лежат 16-битные символы UNICODE. Физически линкер кладет эти строки переменной длиины между каталогами и собственно данными ресурсов.
Понятно, что `SUBDIR RVA` указывает на совершенно аналогичную таблицу подкаталога.
`DATA ENTRY RVA` указывает на запись `RESOURCE DATA ENTRY` такого вида:
>DD DATA RVA
>DD SIZE
>DD CODEPAGE
>DD RESERVED
декларация в RXTypes.Pas:
>IMAGE_RESOURCE_DATA_ENTRY = packed record
> OffsetToData : DWORD;
> Size : DWORD;
> CodePage : DWORD;
> Reserved : DWORD;
>end;
`DATA RVA` — адрес бинарных данных, `SIZE` — их размер. `CODEPAGE` (кодовая страницa) обычно имеет снысл только для строковых ресурсов. Оговаривается, что в Win32 это должна быть одна из стандартных страниц UNICODE. Сами бинарные данные могут жить либо прямо за полем `RESERVED`, либо где-то в другом месте — смотря куда линкер их положит.
Дамп памяти (взят из PE.TXT)
Далее я привожу целиком фрагмент файла PE.TXT. Это — конкретный пример размещения ресурсов с подробным дампом памяти.
The following is an example for an app. which wants to use the following data as resources:
>TypeId# NameId# Language ID Resource Data
>00000001 00000001 0 00010001
>00000001 00000001 1 10010001
>00000001 00000002 0 00010002
>00000001 00000003 0 00010003
>00000002 00000001 0 00020001
>00000002 00000002 0 00020002
>00000002 00000003 0 00020003
>00000002 00000004 0 00020004
>00000009 00000001 0 00090001
>00000009 00000009 0 00090009
>00000009 00000009 1 10090009
>00000009 00000009 2 20090009
>Then the Resource Directory in the Portable format looks like:
>Offset Data
>0000: 00000000 00000000 00000000 00030000 (3 entries in this directory)
>0010: 00000001 80000028 (TypeId #1, Subdirectory at offset 0x28)
>0018: 00000002 80000050 (TypeId #2, Subdirectory at offset 0x50)
>0020: 00000009 80000080 (TypeId #9, Subdirectory at offset 0x80)
>0028: 00000000 00000000 00000000 00030000 (3 entries in this directory)
>0038: 00000001 800000A0 (NameId #1, Subdirectory at offset 0xA0)
>0040: 00000002 00000108 (NameId #2, data desc at offset 0x108)
>0048: 00000003 00000118 (NameId #3, data desc at offset 0x118)
>0050: 00000000 00000000 00000000 00040000 (4 entries in this directory)
>0060: 00000001 00000128 (NameId #1, data desc at offset 0x128)
>0068: 00000002 00000138 (NameId #2, data desc at offset 0x138)
>0070: 00000003 00000148 (NameId #3, data desc at offset 0x148)
>0078: 00000004 00000158 (NameId #4, data desc at offset 0x158)
>0080: 00000000 00000000 00000000 00020000 (2 entries in this directory)
>0090: 00000001 00000168 (NameId #1, data desc at offset 0x168)
>0098: 00000009 800000C0 (NameId #9, Subdirectory at offset 0xC0)
>00A0: 00000000 00000000 00000000 00020000 (2 entries in this directory)
>00B0: 00000000 000000E8 (Language ID 0, data desc at offset 0xE8
>00B8: 00000001 000000F8 (Language ID 1, data desc at offset 0xF8
>00C0: 00000000 00000000 00000000 00030000 (3 entries in this directory)
>00D0: 00000001 00000178 (Language ID 0, data desc at offset 0x178
>00D8: 00000001 00000188 (Language ID 1, data desc at offset 0x188
>00E0: 00000001 00000198 (Language ID 2, data desc at offset 0x198
>00E8: 000001A8 (At offset 0x1A8, for TypeId #1, NameId #1, Language id #0
>00000004 (4 bytes of data)
>00000000 (codepage)
>00000000 (reserved)
>00F8: 000001AC (At offset 0x1AC, for TypeId #1, NameId #1, Language id #1
>00000004 (4 bytes of data)
>00000000 (codepage)
>00000000 (reserved)
>0108: 000001B0 (At offset 0x1B0, for TypeId #1, NameId #2,
>00000004 (4 bytes of data)
>00000000 (codepage)
>00000000 (reserved)
>0118: 000001B4 (At offset 0x1B4, for TypeId #1, NameId #3,
>00000004 (4 bytes of data)
>00000000 (codepage)
>00000000 (reserved)
>0128: 000001B8 (At offset 0x1B8, for TypeId #2, NameId #1,
>00000004 (4 bytes of data)
>00000000 (codepage)
>00000000 (reserved)
>0138: 000001BC (At offset 0x1BC, for TypeId #2, NameId #2,
>00000004 (4 bytes of data)
>00000000 (codepage)
>00000000 (reserved)
>0148: 000001C0 (At offset 0x1C0, for TypeId #2, NameId #3,
>00000004 (4 bytes of data)
>00000000 (codepage)
>00000000 (reserved)
>0158: 000001C4 (At offset 0x1C4, for TypeId #2, NameId #4,
>00000004 (4 bytes of data)
>00000000 (codepage)
>00000000 (reserved)
>0168: 000001C8 (At offset 0x1C8, for TypeId #9, NameId #1,
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге собраны предания и поверья о призраках ночи — колдунах и ведьмах, оборотнях и вампирах, один вид которых вызывал неподдельный страх, леденивший даже мужественное сердце.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
…«Песнь о Нибелунгах» принадлежит к числу наиболее известных эпических произведений человечества. Она находится в кругу таких творений, как поэмы Гомера и «Песнь о Роланде», «Слово о полку Игореве» и «Божественная комедия» Данте — если оставаться в пределе европейских литератур…В. Г. Адмони.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Сейчас во многих школах, институтах и других учебных заведениях можно встретить компьютеры старого парка, уже отслужившие свое как морально, так и физически. На таких компьютерах можно изучать разве что Dos, что далеко от реалий сегодняшнего дня. К тому же у большинства, как правило, жесткий диск уже в нерабочем состоянии. Но и выбросить жалко, а новых никто не дает. Различные спонсоры, меценаты, бывает, подарят компьютер (один) и радуются, как дети. Спасибо, конечно, большое, но проблемы, как вы понимаете, этот компьютер в общем не решает, даже наоборот, усугубляет, работать на старых уже как-то не хочется, теперь просто есть с чем сравнивать.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.