Сейчас на форуме: tyns777 (+4 невидимых)

 eXeL@B —› Программирование —› Назначение флага IMAGE_SCN_MEM_NOT_PAGED
Посл.ответ Сообщение

Ранг: 40.9 (посетитель), 8thx
Активность: 0.040.01
Статус: Участник

Создано: 18 октября 2010 18:53
· Личное сообщение · #1

Никак не могу понять, в каких случаях секция должна иметь этот флаг. В интернетах ничего внятного по сабжу не нашел. По ходу просмотра виндовых драйверов обнаружилась следующая закономерность: у секций, награждённых флагом IMAGE_SCN_MEM_DISCARDABLE, флаг IMAGE_SCN_MEM_NOT_PAGED отсутствует, но так же он отсутствует и у секций с именем "PAGE", хотя флага IMAGE_SCN_MEM_DISCARDABLE у них тоже нет. А вот к примеру в известном всем драйвере GiveIO.sys вообще ни у одной секции нет флага IMAGE_SCN_MEM_NOT_PAGED. Короче, ни хрена не понятно. Подскажите, кто знает, а то что-то не хочется в самый неожиданный момент синьку словить.




Ранг: 154.2 (ветеран), 66thx
Активность: 0.080
Статус: Участник
REVENGE Crew

Создано: 18 октября 2010 19:37
· Личное сообщение · #2

1) Берем описание формата PECOFF:
www.microsoft.com/whdc/system/platform/firmware/pecoff.mspx

и видим там:

"IMAGE_SCN_MEM_NOT_PAGED = The section is not pageable."

2) Если этого не будет достаточно, то идем на MSDN:
msdn.microsoft.com/en-us/library/ff554346(VS.85).aspx

и вникаем в пару следующих предложений:

"By default, the linker assigns names such as ".text" and ".data" to the code and data sections of a driver image file. When the driver is loaded, the I/O manager makes these sections nonpaged. A nonpaged section is always memory-resident."

"Code that runs at IRQL >= DISPATCH_LEVEL must be memory-resident. That is, this code must be either in a nonpageable segment, or in a pageable segment that is locked in memory. If code that is running at IRQL >= DISPATCH_LEVEL causes a page fault, a bug check occurs. Drivers can use the PAGED_CODE macro to verify that pageable functions are called only at appropriate IRQLs."



| Сообщение посчитали полезным: FalseMaster


Ранг: 116.6 (ветеран), 8thx
Активность: 0.050
Статус: Участник

Создано: 19 октября 2010 17:05
· Личное сообщение · #3

Секции, имеющие IMAGE_SCN_MEM_DISCARDABLE, отбрасывается лоадером после вызова INIT, поэтому совершенно пофигу на то какие флаги будут в результате у этих секций.

| Сообщение посчитали полезным: FalseMaster

Ранг: 40.9 (посетитель), 8thx
Активность: 0.040.01
Статус: Участник

Создано: 20 октября 2010 00:09
· Личное сообщение · #4

и вникаем в пару следующих предложений:

Вник, thanks.


 eXeL@B —› Программирование —› Назначение флага IMAGE_SCN_MEM_NOT_PAGED
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати