Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Создание эффективных приложений для Windows Джеффри Рихтер 2004 (Книга).pdf
Скачиваний:
385
Добавлен:
15.06.2014
Размер:
8.44 Mб
Скачать

В пятом поле выводятся атрибуты защиты и флаги атрибутов защиты текущего блока. Атрибуты защиты блока замещают атрибуты защиты региона, содержащего данный блок. Их допустимые значения идентичны применяемым для регионов; кроме того, блоку могут быть присвоены флаги PAGE_GUARD, PAGE_WRITECOMBINE и PAGE_NOCACHE,

недопустимые для региона.

Особенности адресного пространства в Windows 98

В таблице 1 3-4 показана карта адресного пространства при выполнении все той же программы VMMap, но уже под управлением Windows 98. Для экономии места диапазон виртуальных адресов между 0x80018000 и 0x85620000 не приведен.

Базовый

Тип

Размер

Блоки

Атрибут(ы)

Описание

адрес

 

 

 

защиты

 

 

 

 

 

 

 

00000000

Free

4194304

 

 

 

 

 

 

 

 

 

 

 

 

00400000

Private

131072

6

----

C:\CD\X86\DEBUG\14_VMMAP.EXE

 

 

 

 

 

 

00400000

Private

8192

 

-R-- ---

 

 

 

 

 

 

 

00402000

Private

8192

 

-RW- ---

 

 

 

 

 

 

 

00404000

Private

73728

 

-R-- ---

 

 

 

 

 

 

 

 

 

00416000

Private

8192

 

-RW- ---

 

 

 

 

 

 

 

 

 

00418000

Private

8192

 

-R-- ---

 

 

 

 

 

 

 

0041А000

Reserve

24576

 

 

 

 

 

 

 

 

 

00420000

Private

1114112

4

-

 

 

 

 

 

 

 

00420000

Private

20480

 

-RW- ---

 

 

 

 

 

 

 

00425000

Reserve

1028096

 

-

 

 

 

 

 

 

 

00520000

Private

4096

 

-RW- ---

 

 

 

 

 

 

 

 

 

00521000

Reserve

61440

 

 

 

 

 

 

 

 

 

 

 

 

00530000

Private

65536

2

-RW- ---

 

 

 

 

 

 

 

00530000

Private

4096

 

-RW- ---

 

 

 

 

 

 

 

00531000

Reserve

61440

 

-RW- ---

 

 

 

 

 

 

 

00540000

Private

1179648

6

 

Стек потока

 

 

 

 

 

 

00540000

Reserve

942080

 

--

 

 

 

 

 

 

 

00626000

Private

4096

 

-RW- ---

 

 

 

 

 

 

 

00627000

Reserve

24576

 

-- -

 

 

 

 

 

 

 

00620000

Private

4096

 

— --

 

 

 

 

 

 

 

 

 

0062Е000

Private

139261

 

-RW- ---

 

 

 

 

 

 

 

00650000

Reserve

65536

 

 

 

 

 

 

 

 

 

00660000

Private

1114112

4

- _

 

 

 

 

 

 

 

00660000

Private

20480

 

-RW- ---

 

 

 

 

 

 

 

00665000

Reserve

1028096

 

--- --

 

 

 

 

 

 

 

00760000

Private

4096

 

-RW- ---

 

 

 

 

 

 

 

00761000

Reserve

61440

 

 

 

 

 

 

 

 

 

00770000

Private

10485/6

2

-RW- ---

 

 

 

 

 

 

 

00770000

Private

32768

 

-RW- ---

 

 

 

 

 

 

 

00778000

Reserve

1015808

 

-RW- ---

 

 

 

 

 

 

 

00870000

Free

2004418560

 

 

 

 

 

 

 

 

 

78000000

Private

262144

3

----

С \WINDOWS\SYSTEM\MSVCRT.DLL

 

 

 

 

 

 

78000000

Private

188416

 

-R-- ---

 

 

 

 

 

 

 

7802E000

Private

57344

 

-RW- ---

 

 

 

 

 

 

 

7803С000

Private

16384

 

-R-- -

 

 

 

 

 

 

 

78040000

Free

133955584

 

 

 

 

 

 

 

 

 

80000000

Private

4096

1

---

 

 

 

 

 

 

 

 

80000000

Reserve

4096

 

-- ---

 

 

 

 

 

 

 

 

 

80001000

Private

4096

1

 

 

 

 

 

 

 

 

 

 

80001000

Private

4096

 

-RW- ---

 

 

 

 

 

 

 

 

 

80002000

Private

4096

1

----

 

 

 

 

 

 

 

80002000

Private

4096

 

-RW- ---

 

 

 

 

 

 

 

80003000

Private

4096

1

 

 

 

 

 

 

 

 

80003000

Private

4096

 

-RW- ---

 

 

 

 

 

 

 

 

 

80004000

Private

65536

2

 

 

 

 

 

 

 

 

 

 

80004000

Private

32768

 

-RW- ---

 

 

 

 

 

 

 

8000С000

Reserve

32768

 

---- ---

 

 

 

 

 

 

 

80014000

Private

4096

1

 

 

 

 

 

 

 

 

80014000

Private

4096

 

-RW- ---

 

 

 

 

 

 

 

80015000

Private

4096

1

----

 

 

 

 

 

 

 

 

80015000

Private

4096

 

-RW- ---

 

 

 

 

 

 

 

 

 

80016000

Private

4096

1

----

 

 

 

 

 

 

 

80016000

Private

4096

 

-RW- ---

 

 

 

 

 

 

 

80017000

Private

4096

1

 

 

 

 

 

 

 

 

80017000

Private

4096

 

-RW- ---

 

 

 

 

 

 

 

85620000

Free

9773056

 

 

 

 

 

 

 

 

 

85F72000

Private

151552

1

----

 

 

 

 

 

 

 

8bF72000

Private

151552

 

-RW- ---

 

 

 

 

 

 

 

85F97000

Private

327680

1

----

 

 

 

 

 

 

 

85F97000

Private

327680

 

-RW- ---

 

 

 

 

 

 

 

85FE7000

Free

22052864

 

 

 

 

 

 

 

 

 

874EF000

Private

4194304

1

----

 

 

 

 

 

 

 

874EF000

Reserve

4194304

 

 

 

 

 

 

 

 

 

878EF000

Free

679219200

 

 

 

 

 

 

 

 

 

B00B0000

Private

880640

3

 

 

 

 

 

 

 

 

B00B0000

Private

233472

 

-RW- ---

 

 

 

 

 

 

 

В00Е9000

Private

20480

 

-RW- ---

 

 

 

 

 

 

 

В00ЕЕ000

Private

626688

 

-R- ---

 

 

 

 

 

 

 

В0187000

Free

177311744

 

 

 

 

 

 

 

 

 

ВААА0000

Private

315392

7

----

 

 

 

 

 

 

 

ВАAА0000

Private

4096

 

-R- ---

 

 

 

 

 

 

 

ВААA1000

Private

4096

 

-RW- ---

 

 

 

 

 

 

 

ВАAА2000

Private

241664

 

-R- ---

 

 

 

 

 

 

 

BAADD000

Private

4096

 

-RW- ---

 

 

 

 

 

 

 

 

 

BAADE000

Private

4096

 

-R- ---

 

 

 

 

 

 

 

BAAOF000

Private

32788

 

-RW- ---

 

 

 

 

 

 

 

ВААЕ7000

Private

24576

 

-R- ---

 

 

 

 

 

 

 

 

 

BAAED000

Free

86978560

 

 

 

 

 

 

 

 

 

BFDE0000

Private

20480

1

 

 

 

 

 

 

 

 

BFOE0000

Private

20480

 

-R- ---

 

 

 

 

 

 

 

BFDE5000

Free

45056

 

 

 

 

 

 

 

 

 

 

 

 

BFDF0000

Private

65536

3

----

 

 

 

 

 

 

 

BFDF0000

Private

40960

 

-R- ---

 

 

 

 

 

 

 

 

 

BFDFA000

Private

4096

 

-RW- ---

 

 

 

 

 

 

 

 

 

BFDFB000

Private

20480

 

-R- ---

 

 

 

 

 

 

 

BFE00000

Free

131072

 

 

 

 

 

 

 

 

 

BFE20000

Private

16384

3

---

 

 

 

 

 

 

 

 

BFE20000

Private

8192

 

-R- ---

 

 

 

 

 

 

 

 

 

BFE22000

Private

4096

 

-RW- ---

 

 

 

 

 

 

 

 

 

BFE23000

Private

4096

 

-R- ---

 

 

 

 

 

 

 

 

 

BFE24000

Free

245760

 

 

 

 

 

 

 

 

 

BFE60000

Private

24576

3

----

 

 

 

 

 

 

 

BFE60000

Private

8192

 

-R-- ---

 

 

 

 

 

 

 

 

 

BFE62000

Private

4096

 

-RW- ---

 

 

 

 

 

 

 

 

 

BFE63000

Private

12288

 

-R-- ---

 

 

 

 

 

 

 

BFE66000

Free

40960

 

 

 

 

 

 

 

 

 

BFE70000

Private

24I376

3

----

 

 

 

 

 

 

 

BFE70000

Private

8192

 

-R-- ---

 

 

 

 

 

 

 

BFE72000

Private

4096

 

-RW- ---

 

 

 

 

 

 

 

BFE73000

Private

12288

 

-R-- ---

 

 

 

 

 

 

 

BFE76000

Free

40960

 

 

 

 

 

 

 

 

 

BFE80000

Private

65536

3

----

С:\WINDOWS\SYSTEM\ADVAPI32.DLL

 

 

 

 

 

 

BFE80000

Private

49152

 

-R-- ---

 

 

 

 

 

 

 

BFE8C000

Private

4096

 

-RW- ——

 

 

 

 

 

 

 

BFE8D000

Private

12288

 

-R-- ---

 

 

 

 

 

 

 

BFE90000

Private

573440

3

 

 

 

 

 

 

 

 

BFE90000

Private

425984

 

-R-- ---

 

 

 

 

 

 

 

BFEF8000

Private

4096

 

-RW- ---

 

 

 

 

 

 

 

BFEF9000

Private

143360

 

-R-- ---

 

 

 

 

 

 

 

BFF1C000

Free

16384

 

 

 

 

 

 

 

 

 

BFF20000

Private

155648

5

 

----

С:\WINDOWS\SYSTEM\GDI32.DLL

 

 

 

 

 

 

 

BFF20000

Private

126976

 

 

-R-- ---

 

 

 

 

 

 

 

 

BFF3F000

Private

8192

 

 

-RW- ---

 

 

 

 

 

 

 

 

BFF41000

Private

4096

 

 

-R-- ---

 

 

 

 

 

 

 

 

BFF42000

Private

1096

 

 

-RW- ---

 

 

 

 

 

 

 

 

BFF43000

Private

12288

 

 

-R-- ---

 

 

 

 

 

 

 

 

BFF46000

Free

40960

 

 

 

 

 

 

 

 

 

 

 

BFF50000

Private

69632

3

 

 

С:\WINDOWS\SYSTEM\USER32.DLL

 

 

 

 

 

 

 

BFF50000

Private

53248

 

 

-R-- ---

 

 

 

 

 

 

 

 

BFF5D000

Private

4096

 

 

-RW- —

 

 

 

 

 

 

 

 

BFF5E000

Private

12288

 

 

-R

 

 

 

 

 

 

 

 

 

 

 

BFF61000

Free

61440

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BFF70000

Private

585728

5

 

----

С:\WINDOWS\SYSTEM\KERNEL32.DLL

 

 

 

 

 

 

 

BFF70000

Private

352256

 

 

-R

 

 

 

 

 

 

 

 

 

 

 

BFFC6000

Reserve

12288

 

----

--

 

 

 

 

 

 

 

 

BFFC9000

Private

16384

 

 

-RW

 

 

 

 

 

 

 

 

 

 

 

BFFCD000

Private

90112

 

 

-R

 

 

 

 

 

 

 

 

 

 

 

BFFE3000

Reserve

114688

 

----

---

 

 

 

 

 

 

 

 

BFFFF000

Free

4006

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Таблица 13-4. Образец карты адресного пространства процесса (с указанием блоков внутри регионов) в Windows 98

Главное отличие двух карт адресного пространства в том, что под управлением Windows 98 информации получзешь значительно меньше Например, о регионах и блоках можно узнать лишь, свободные они, резервные или закрытые Распознать тип физической памяти Mapped или Image нельзя, Windows 98 не позволяет получить дополнительную информацию, по которой можно было бы судить, что с регионом связан проецируемый в память файл или образ исполняемого файла.

Наверное, Вы заметили, что размер большинства регионов кратен 64 Кб (это значение определяется гранулярностью выделения памяти) Если размеры блоков, составляющих регион, не дают в сумме величины, кратной 64 Кб, то в конце региона часто появляется резервный блок адресного пространства. Его размер выбирается системой так, чтобы довести общий объем региона до величины, кратной 64 Кб Например, регион, который начинается с ядреса 0x00530000, включает в себя два блока: четырехкилобайтовый блок переданной памяти и резервный блок, занимающий 60 Кб адресного пространства.

Заметьте также, что на последней карте не встречаются атрибуты защиты, разрешающие исполнение или копирование при записи, поcкoлькy Windowы 98 не поддерживает их. Кроме того, она не поддерживает и флаги атрибутов защиты (PAGE_GUARD, PAGE_WRITECOMBINE и PAGE_NOCACHE) Из-за этого программе VMMap

приходится использовать более сложный метод, чтобы опредслить, не выделен ли данный регион под стек потока.

И последнее. В Windows 98 (в отличие от Windows 2000) можно исследовать регион адресного пространства 0x80000000-0xBFFFFFFF. Это раздел, в котором находится