Программирование драйверов Windows

         

Вывод на экран информации о процессе загрузки


Указав параметр /sos в соответствующей строке файла boot.ini, например,

multi(0)disk(0)rdisk(0)partition(2)\Windows="Комментарий для пользователя" /sos

можно обеспечить вывод на экран информацию о загружаемых программных модулях операционной системы. Автору удалось наблюдать следующие записи:

multi(0)disk(0)rdisk(0)partition(1)\Windows\System32\ntoskrnl.exe multi(0)disk(0)rdisk(0)partition(1)\Windows\System32\hal.dll multi(0)disk(0)rdisk(0)partition(1)\Windows\System32\KDCOM.DLL multi(0)disk(0)rdisk(0)partition(1)\Windows\System32\BOOTVID.DLL multi(0)disk(0)rdisk(0)partition(1)\Windows\System32\config\system multi(0)disk(0)rdisk(0)partition(1)\Windows\System32\c_1251.nls multi(0)disk(0)rdisk(0)partition(1)\Windows\System32\c_866.nls multi(0)disk(0)rdisk(0)partition(1)\Windows\System32\l_intl.nls multi(0)disk(0)rdisk(0)partition(1)\Windows\FONTS\vga866.fon multi(0)disk(0)rdisk(0)partition(1)\Windows\AppPatch\drvmain.sdb multi(0)disk(0)rdisk(0)partition(1)\Windows\System32\DRIVERS\ACPI.SYS multi(0)disk(0)rdisk(0)partition(1)\Windows\System32\DRIVERS\WMILIB.SYS multi(0)disk(0)rdisk(0)partition(1)\Windows\System32\DRIVERS\pci.sys multi(0)disk(0)rdisk(0)partition(1)\Windows\System32\DRIVERS\isapnp.sys multi(0)disk(0)rdisk(0)partition(1)\Windows\System32\DRIVERS\viaide.sys multi(0)disk(0)rdisk(0)partition(1)\Windows\System32\DRIVERS\PCIIDEX.SYS multi(0)disk(0)rdisk(0)partition(1)\Windows\System32\DRIVERS\MountMgr.sys multi(0)disk(0)rdisk(0)partition(1)\Windows\System32\DRIVERS\ftdisk.sys multi(0)disk(0)rdisk(0)partition(1)\Windows\System32\DRIVERS\dmload.sys multi(0)disk(0)rdisk(0)partition(1)\Windows\System32\DRIVERS\dmio.sys multi(0)disk(0)rdisk(0)partition(1)\Windows\System32\DRIVERS\PartMgr.sys multi(0)disk(0)rdisk(0)partition(1)\Windows\System32\DRIVERS\VolSnap.sys multi(0)disk(0)rdisk(0)partition(1)\Windows\System32\DRIVERS\atapi.sys multi(0)disk(0)rdisk(0)partition(1)\Windows\System32\DRIVERS\disk.sys multi(0)disk(0)rdisk(0)partition(1)\Windows\System32\DRIVERS\CLASSPNP.SYS multi(0)disk(0)rdisk(0)partition(1)\Windows\System32\DRIVERS\sr.sys multi(0)disk(0)rdisk(0)partition(1)\Windows\System32\DRIVERS\Fastfat.sys multi(0)disk(0)rdisk(0)partition(1)\Windows\System32\DRIVERS\KSecDD.sys multi(0)disk(0)rdisk(0)partition(1)\Windows\System32\DRIVERS\NDIS.sys multi(0)disk(0)rdisk(0)partition(1)\Windows\System32\DRIVERS\viaagp.sys multi(0)disk(0)rdisk(0)partition(1)\Windows\System32\DRIVERS\nmfilter.sys multi(0)disk(0)rdisk(0)partition(1)\Windows\System32\DRIVERS\Simvid.sys multi(0)disk(0)rdisk(0)partition(1)\Windows\System32\DRIVERS\Mup.sys


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

В том случае, если в строке описания параметров загрузки после опции /sos ввести /PAE (поддержка расширенной физической адресации, PAE, см. главу 4), то первая строка примет вид: multi(0)disk(0)rdisk(0)partition(1)\Windows\System32\ntkrnlpa.exe




Убедиться программным способом в том, поддерживает ли операционная система в настоящий момент работу с РАЕ (то есть с каким ключом она загружена), несложно. Достаточно в текст драйвера включить следующий фрагмент:

if(*Mm64bitPhysicalAddress==TRUE)

{

       #if DBG

              DbgPrint("System supports IO operations over 4GB");

       #endif

}

else

{

       #if DBG

              DbgPrint("System doesn't support IO ioerations over 4GB");

       #endif

}

Переменная Mm64BitPhysicalAddress объявляется в файлах wdm.h и ntddk.h.
Другое подтверждение работы операционной системы с поддержкой РАЕ (Physical Address Extension) можно обнаружить в Системном Реестре: в таком случае параметр PhysicalAddressExtension в разделе HKLM\System\CurrentControlSet\Control\Session Manager\Memory Management примет значение 1 (в отличие от значения 0 в отсутствие поддержки РАЕ).

Содержание раздела