<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML><HEAD> <META content="text/html; charset=utf-8" http-equiv=Content-Type> <META name=GENERATOR content="MSHTML 8.00.7600.16385"> <STYLE></STYLE> </HEAD> <BODY> <DIV><FONT size=2 face=Arial>Однобитная ошибка в ESP регистре процессора вызывает STOP 0x0000007F (0x00000008,...)<BR>0x0000007F (0x00000008, 0x00000000, 0x00000000, 0x00000000) <BR>UNEXPECTED_KERNEL_MODE_TRAP</FONT></DIV> <DIV><FONT size=2 face=Arial></FONT> </DIV> <DIV><FONT size=2 face=Arial>Симптомы<BR>Ошибка может возникать на компьютерах под управлением Windows, оснащенных процессором Intel Xeon (или другими). При этом ошибка следующего вида<BR> <BR>STOP 0x0000007F (0x00000008,<STRONG><FONT color=#ff0000> 0x00000000, 0x00000000, 0x00000000</FONT></STRONG>) UNEXPECTED_KERNEL_MODE_TRAP </FONT></DIV> <DIV><FONT size=2 face=Arial></FONT> </DIV> <DIV><FONT size=2 face=Arial>При возникновении ошибки наблюдаются следующие признаки.<BR>- Первый параметр в данном сообщении равен 0x0000008 (ошибка является двойным исключением).<BR>- Вследствие ошибки в одном из битов регистра ESP данный регистр содержит адрес, находящийся за пределами стека текущего потока.</FONT></DIV> <DIV><FONT size=2 face=Arial></FONT> </DIV> <DIV><FONT size=2 face=Arial>Данная проблема возникает в следующих случаях.<BR>- Система BIOS компьютера не загрузила обновление микрокода, необходимое для работы процессора компьютера.<BR>- Процессор поврежден или неисправен.<BR>- Нарушены условия эксплуатации процессора (процессор эксплуатируется при недопустимой температуре, неверном напряжении питания или с неверной частотой).</FONT></DIV> <DIV><FONT size=2 face=Arial></FONT> </DIV> <DIV><FONT size=2 face=Arial>Решение</FONT></DIV> <DIV><FONT size=2 face=Arial></FONT> </DIV> <DIV><FONT size=2 face=Arial>Способ 1<BR>Определите, установлена ли на компьютере последняя версия обновления микрокода.<BR>Обновление микрокода исправляет ошибки во внутренней логике процессора. Обновления микрокода не могут храниться в процессоре и загружаются в процессор при каждой загрузке компьютера. Загрузка обновлений микрокода выполняется системой BIOS или драйвером Update.sys.<BR>Если на компьютере установлен процессор, выпущенный компанией Intel, то для определения версии обновления микрокода, загружаемого в данный процессор загрузите программу определения частоты процессора Intel с сайта<BR></FONT><A href="http://support.intel.com/support/processors/tools/frequencyid"><FONT size=2 face=Arial>http://support.intel.com/support/processors/tools/frequencyid</FONT></A><FONT size=2 face=Arial>; после чего установите и запустите программу.<BR>Запишите следующие сведения:<BR>- семейство;<BR>- модель;<BR>- степпинг;<BR>редакция.<BR>Номера семейства, модели и степпинга однозначно определяют тип процессора. Редакция процессора позволяет определить версию загруженного обновления микрокода.<BR>Признаки, описанные в данной статье, наиболее часто наблюдаются на процессорах Intel Xeon с номером семейства 15, номером модели 2 и степпингом 9, которые установлены на системных платах, использующих набор микросхем ServerWorks (шестнадцатеричные значения указанных выше номеров семейства, модели и степпинга равны F, 2 и 9 соответственно). Чтобы эти процессоры работали правильно, необходима редакция 0x18 или более поздняя (значение 0x18 — это шестнадцатеричное представление десятичного числа 24).<BR>Если номер редакции равен 0, значит, система BIOS компьютера не содержит обновление микрокода для установленных на компьютере процессоров. В этом случае необходимо установить обновление для BIOS, которое содержит обновление микрокода, поддерживающее используемые процессоры.</FONT></DIV> <DIV><FONT size=2 face=Arial></FONT> </DIV> <DIV><FONT size=2 face=Arial>Способ 2<BR>Убедитесь, что процессор исправен<BR>Если у вас есть такая возможность, то попробуйте установить ваш процессор на компьютер, на котором указанная проблема не возникает либо установите на компьютер на котором проблема наблюдается процессор с компьютера на котором данной проблемы нет.<BR>Внимание! Не производите действия по замене процессора без должной квалификации.<BR>Если после замены процессора на исходном компьютере проблема не исчезнет, а на компьютере, на который установлен исходный процессор, проблема не возникнет, то процессор, скорее всего, исправен и не является причиной ошибки.<BR>Если после замены процессора на исходном компьютере проблема исчезнет, а на компьютере, на который установлен исходный процессор, проблема возникнет, то причиной проблемы, скорее всего, является неисправность процессора.</FONT></DIV> <DIV><FONT size=2 face=Arial></FONT> </DIV> <DIV><FONT size=2 face=Arial>Способ 3<BR>Проверьте, соблюдаются ли условия эксплуатации процессора.<BR>Высокая температура в помещении, плохая вентиляция или накопление пыли могут вызывать сбои в работе процессоров и других компонентов. Проблемы с вентиляцией могут быть вызваны неработающими вентиляторами или закупоркой вентиляционных каналов. Если внутренняя часть или вентиляционные каналы компьютера заполнены пылью или если описанные признаки наблюдаются только при установке компьютера в определенных местах, причиной проблемы может быть перегрев. Убедитесь, что компоненты компьютера очищены от пыли, вентиляторы работают надлежащим образом, вентиляционные каналы свободны, а место установки компьютера надлежащим образом вентилируется.<BR>Сбои в работе процессоров и других компонентов могут вызываться выходом напряжения питания за допустимые пределы, а также перепадами напряжения. Использование напряжения питания ненадлежащего номинала или плохого качества, перегрузка или сбои блока питания компьютера, а также сбои в работе компонентов системной платы могут привести к тому, что напряжение питания процессора выйдет за допустимые пределы или будет ненадлежащего качества.</FONT></DIV> <DIV><FONT size=2 face=Arial></FONT> </DIV> <DIV><BR><FONT size=2 face=Arial>Дополнительно</FONT></DIV> <DIV><FONT size=2 face=Arial></FONT> </DIV> <DIV><FONT size=2 face=Arial>Регистр ESP также называют регистром указателя стека. Стек — это находящаяся в памяти структура данных, в которой хранятся сведения о текущем состоянии выполнения потока. Стек потока используется для отслеживания функций, выполняющихся в настоящий момент, а также для хранения параметров, передаваемых этим функциям, и переменных, используемых данными функциями. Регистр ESP должен содержать адрес вершины стека. Если данный регистр содержит ошибочное значение, он может ссылаться на неверные данные или недействительный адрес. Если регистр ESP ссылается на недействительный адрес, может возникнуть двойное исключение.<BR>Чтобы определить, вызвана ли рассматриваемая STOP-ошибка ошибкой в одном из битов регистра ESP, выполните следующие действия.<BR>1. Установите средство Microsoft Debugging Tools for Windows.<BR>2. Запустите средство WinDbg, откройте нужный файл дампа памяти через меню File -> Open Crash Dump.<BR>Информация, отображаемая при начальном анализе файла дампа, может выглядеть следующим образом.</FONT></DIV> <DIV><FONT size=2 face=Arial></FONT> </DIV> <DIV><FONT size=2 face=Arial> *******************************************************************************<BR>* *<BR>* Bugcheck Analysis *<BR>* *<BR>*******************************************************************************</FONT></DIV> <DIV><FONT size=2 face=Arial></FONT> </DIV> <DIV><FONT size=2 face=Arial>Use !analyze -v to get detailed debugging information.</FONT></DIV> <DIV><FONT size=2 face=Arial></FONT> </DIV> <DIV><FONT size=2 face=Arial>BugCheck 7F, {8, 0, 0, 0}</FONT></DIV> <DIV><FONT size=2 face=Arial></FONT> </DIV> <DIV><FONT size=2 face=Arial>Probably caused by : ntkrnlmp.exe ( nt!KiUnlockDispatcherDatabase+1c )</FONT></DIV> <DIV><FONT size=2 face=Arial></FONT> </DIV> <DIV><FONT size=2 face=Arial>Followup: MachineOwner<BR> </FONT></DIV> <DIV><FONT size=2 face=Arial></FONT> </DIV> <DIV><FONT size=2 face=Arial>3. Чтобы автоматически проанализировать файл дампа, выполните команду !analyze -v. Ниже показан пример выходных данных команды !analyze -v.</FONT></DIV> <DIV><FONT size=2 face=Arial></FONT> </DIV> <DIV><FONT size=2 face=Arial> 0: kd> !analyze -v<BR>*******************************************************************************<BR>* *<BR>* Bugcheck Analysis *<BR>* *<BR>*******************************************************************************</FONT></DIV> <DIV><FONT size=2 face=Arial></FONT> </DIV> <DIV><FONT size=2 face=Arial>UNEXPECTED_KERNEL_MODE_TRAP (7f) This means a trap occurred in kernel mode, and it is a trap of a kind<BR>that the kernel isn`t permitted to have/catch (bound trap) or that<BR>is always instant death (double fault). The first number in the<BR>bugcheck params is the number of the trap (8 = double fault, etc)<BR>Consult an Intel x86 family manual to learn more about what these<BR>traps are. Here is a *portion* of those codes:<BR>If kv shows a taskGate<BR> use ..tss on the part before the colon, then kv.<BR>Else if kv shows a trapframe<BR> use ..trap on that value<BR>Else<BR> .trap on the appropriate frame will show where the trap was taken<BR>(on x86, this will be the ebp that goes with the procedure KiTrap)<BR>Endif<BR>kb will then show the corrected stack.<BR>Arguments:<BR>Arg1: 00000008, EXCEPTION_DOUBLE_FAULT<BR>Arg2: 00000000<BR>Arg3: 00000000<BR>Arg4: 00000000</FONT></DIV> <DIV><FONT size=2 face=Arial></FONT> </DIV> <DIV><FONT size=2 face=Arial>Debugging Details:<BR>------------------</FONT></DIV> <DIV><FONT size=2 face=Arial></FONT> </DIV> <DIV><BR><FONT size=2 face=Arial>BUGCHECK_STR: 0x7f_8</FONT></DIV> <DIV><FONT size=2 face=Arial></FONT> </DIV> <DIV><FONT size=2 face=Arial>TSS: 00000028 -- (.tss 28)<BR>eax=ffdff4dc ebx=f5d299dc ecx=8046f1c0 edx=00000000 esi=853e7a60 edi=00000102<BR>eip=8046a86c esp=f5da9948 ebp=f5d2997c iopl=0 nv up ei pl zr na po nc<BR>cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00010246<BR>nt!KiUnlockDispatcherDatabase+0x1c:<BR>8046a86c 59 pop ecx<BR>Resetting default scope</FONT></DIV> <DIV><FONT size=2 face=Arial></FONT> </DIV> <DIV><FONT size=2 face=Arial>DEFAULT_BUCKET_ID: DRIVER_FAULT</FONT></DIV> <DIV><FONT size=2 face=Arial></FONT> </DIV> <DIV><FONT size=2 face=Arial>LAST_CONTROL_TRANSFER: from 80450bb3 to 8046a86c</FONT></DIV> <DIV><FONT size=2 face=Arial></FONT> </DIV> <DIV><FONT size=2 face=Arial>STACK_TEXT:<BR>f5d2997c 80450bb3 00000003 f5d299f8 00000001 nt!KiUnlockDispatcherDatabase+0x1c<BR>f5d29d48 80466389 00000003 0076fe84 00000001 nt!NtWaitForMultipleObjects+0x385<BR>f5d29d48 77f9323e 00000003 0076fe84 00000001 nt!KiSystemService+0xc9<BR>0076fe5c 77e7a059 00000003 0076fe84 00000001 ntdll!ZwWaitForMultipleObjects+0xb<BR>0076feac 77dee9fb 0076fe84 00000001 00000000 KERNEL32!WaitForMultipleObjectsEx+0xea<BR>0076ff08 77deea48 0076fed4 0076ff5c 00000000 USER32!MsgWaitForMultipleObjectsEx+0x153<BR>0076ff24 6d095a7c 00000002 0076ff5c 00000000 USER32!MsgWaitForMultipleObjects+0x1d<BR>0076ff7c 780085bc 00283a90 0062f5ac 0062ffdc IisRTL!SchedulerWorkerThread+0xa7<BR>0076ff90 8042fa31 85400680 0076ff88 ffffffff MSVCRT!_endthreadex+0xc1<BR>00283ab8 ffffffff 00000000 00000000 00000000 nt!KiDeliverApc+0x1a1<BR>00283ab8 ffffffff 00000000 00000000 00000000 0xffffffff<BR>0000096c 00000000 00000000 00000000 00000000 0xffffffff</FONT></DIV> <DIV><FONT size=2 face=Arial></FONT> </DIV> <DIV><BR><FONT size=2 face=Arial>FOLLOWUP_IP:<BR>nt!KiUnlockDispatcherDatabase+1c<BR>8046a86c 59 pop ecx</FONT></DIV> <DIV><FONT size=2 face=Arial></FONT> </DIV> <DIV><FONT size=2 face=Arial>SYMBOL_STACK_INDEX: 0</FONT></DIV> <DIV><FONT size=2 face=Arial></FONT> </DIV> <DIV><FONT size=2 face=Arial>FOLLOWUP_NAME: MachineOwner</FONT></DIV> <DIV><FONT size=2 face=Arial></FONT> </DIV> <DIV><FONT size=2 face=Arial>SYMBOL_NAME: nt!KiUnlockDispatcherDatabase+1c</FONT></DIV> <DIV><FONT size=2 face=Arial></FONT> </DIV> <DIV><FONT size=2 face=Arial>MODULE_NAME: nt</FONT></DIV> <DIV><FONT size=2 face=Arial></FONT> </DIV> <DIV><FONT size=2 face=Arial>IMAGE_NAME: ntkrnlmp.exe</FONT></DIV> <DIV><FONT size=2 face=Arial></FONT> </DIV> <DIV><FONT size=2 face=Arial>DEBUG_FLR_IMAGE_TIMESTAMP: 3ee650b3</FONT></DIV> <DIV><FONT size=2 face=Arial></FONT> </DIV> <DIV><FONT size=2 face=Arial>STACK_COMMAND: .tss 28 ; kb</FONT></DIV> <DIV><FONT size=2 face=Arial></FONT> </DIV> <DIV><FONT size=2 face=Arial>BUCKET_ID: 0x7f_8_nt!KiUnlockDispatcherDatabase+1c</FONT></DIV> <DIV><FONT size=2 face=Arial></FONT> </DIV> <DIV><FONT size=2 face=Arial>Followup: MachineOwner<BR> </FONT></DIV> <DIV><FONT size=2 face=Arial></FONT> </DIV> <DIV><BR><FONT size=2 face=Arial>4. Проанализируйте результаты работы команды !analyze -v и определите, содержатся ли в них сведения о возникновении двойной ошибки. Если будет обнаружена двойная ошибка, выполните команду .tss 28, чтобы отобразить состояние системы в момент возникновения данной ошибки. В приведенном ниже примере показаны значения регистров процессора в момент возникновения двойного исключения.</FONT></DIV> <DIV><FONT size=2 face=Arial></FONT> </DIV> <DIV><FONT size=2 face=Arial> 0: kd> .tss 28<BR>eax=ffdff4dc ebx=f5d299dc ecx=8046f1c0 edx=00000000 esi=853e7a60 edi=00000102<BR>eip=8046a86c esp=f5da9948 ebp=f5d2997c iopl=0 nv up ei pl zr na po nc<BR>cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00010246<BR>nt!KiUnlockDispatcherDatabase+0x1c:<BR>8046a86c 59 pop ecx<BR> <BR>В данном примере в регистре ESP содержится значение f5da9948. Как правило, адрес, хранящийся в регистре ESP, незначительно отличается от адреса, хранящегося в регистре EBP. В данном примере в регистре EBP содержится значение f5d2997c.</FONT></DIV> <DIV><FONT size=2 face=Arial></FONT> </DIV> <DIV><FONT size=2 face=Arial>5. Выполните команду !thread, чтобы отобразить диапазон адресов, выделенный под стек текущего потока. Как правило, двойное исключение возникает в тех случаях, когда адрес, хранящийся в регистре ESP, находится за пределами диапазона адресов, зарезервированных для стека текущего потока. Ниже показан пример выходных данных команды !thread.</FONT></DIV> <DIV><FONT size=2 face=Arial></FONT> </DIV> <DIV><FONT size=2 face=Arial> 0: kd> !thread<BR>THREAD 853e7a60 Cid 904.96c Teb: 7ffdc000 Win32Thread: a21a5c48 RUNNING<BR>Not impersonating<BR>Owning Process 85400680<BR>Wait Start TickCount 578275 Elapsed Ticks: 0<BR>Context Switch Count 38423 LargeStack<BR>UserTime 0:00:02.0031<BR>KernelTime 0:00:06.0640<BR>Start Address KERNEL32!BaseThreadStartThunk (0x77e5b700)<BR>Win32 Start Address MSVCRT!_threadstartex (0x78008532)<BR>Stack Init f5d2a000 Current f5d29c9c Base f5d2a000 Limit f5d27000 Call 0<BR>Priority 8 BasePriority 8 PriorityDecrement 0 DecrementCount 0</FONT></DIV> <DIV><FONT size=2 face=Arial></FONT> </DIV> <DIV><FONT size=2 face=Arial>ChildEBP RetAddr Args to Child<BR>00000000 8046a86c 00000000 00000000 00000000 nt!_KiTrap08+0x41<BR>f5d2997c 80450bb3 00000003 f5d299f8 00000001 nt!KiUnlockDispatcherDatabase+0x1c<BR>f5d29d48 80466389 00000003 0076fe84 00000001 nt!NtWaitForMultipleObjects+0x385<BR>f5d29d48 77f9323e 00000003 0076fe84 00000001 nt!_KiSystemService+0xc9<BR>0076fe5c 77e7a059 00000003 0076fe84 00000001 ntdll!ZwWaitForMultipleObjects+0xb<BR>0076feac 77dee9fb 0076fe84 00000001 00000000 KERNEL32!WaitForMultipleObjectsEx+0xea<BR>0076ff08 77deea48 0076fed4 0076ff5c 00000000 USER32!MsgWaitForMultipleObjectsEx+0x153<BR>0076ff24 6d095a7c 00000002 0076ff5c 00000000 USER32!MsgWaitForMultipleObjects+0x1d<BR>0076ff7c 780085bc 00283a90 0062f5ac 0062ffdc IisRTL!SchedulerWorkerThread+0xa7<BR>0076ffb4 77e5b382 00283ab8 0062f5ac 0062ffdc MSVCRT!_threadstartex+0x8f<BR>0076ffec 00000000 78008532 00283ab8 00000000 KERNEL32!BaseThreadStart+0x52<BR> </FONT></DIV> <DIV><FONT size=2 face=Arial></FONT> </DIV> <DIV><FONT size=2 face=Arial>В данном примере диапазон адресов, выделенных под стек, отображается в следующей строке.<BR> </FONT></DIV> <DIV><FONT size=2 face=Arial></FONT> </DIV> <DIV><FONT size=2 face=Arial>Stack Init f5d2a000 Current f5d29c9c Base f5d2a000 Limit f5d27000 Call 0 <BR>При работе потока значение регистра ESP должно находиться в пределах между базовым (Base, f5d2a000) и минимальным (Limit, f5d27000) адресами стека. Как правило, адрес, хранящийся в регистре регистра ESP, незначительно отличается от текущего адреса (Current, f5d29c9c). Текущий адрес также находится между базовым и минимальным адресами. В данном примере в регистре ESP содержится значение f5da9948. Этот адрес находится далеко за пределами диапазона адресов, выделенных для стека.<BR>Чтобы определить диапазон адресов, выделенных под стек, можно также воспользоваться командой !pcr. Ниже показан пример выходных данных команды !pcr.</FONT></DIV> <DIV><FONT size=2 face=Arial></FONT> </DIV> <DIV><FONT size=2 face=Arial> 0: kd> !pcr<BR> PCR Processor 0 @ffdff000<BR>NtTib.ExceptionList: f5d29d38<BR> NtTib.StackBase: f5d29df0<BR> NtTib.StackLimit: f5d27000<BR> NtTib.SubSystemTib: 00000000<BR> NtTib.Version: 00000000<BR> NtTib.UserPointer: 00000000<BR> NtTib.SelfTib: 7ffdc000</FONT></DIV> <DIV><FONT size=2 face=Arial></FONT> </DIV> <DIV><FONT size=2 face=Arial> SelfPcr: ffdff000<BR> Prcb: ffdff120<BR> Irql: 00000000<BR> IRR: 00000000<BR>IDR: ffffffff<BR> InterruptMode: 00000000<BR> IDT: 80036400<BR> GDT: 80036000<BR>TSS: 80474850</FONT></DIV> <DIV><FONT size=2 face=Arial></FONT> </DIV> <DIV><FONT size=2 face=Arial> CurrentThread: 853e7a60<BR> NextThread: 00000000<BR> IdleThread: 80470600</FONT></DIV> <DIV><FONT size=2 face=Arial></FONT> </DIV> <DIV><FONT size=2 face=Arial> DpcQueue:<BR> </FONT></DIV> <DIV><FONT size=2 face=Arial></FONT> </DIV> <DIV><BR><FONT size=2 face=Arial>Значение NtTib.StackLimit представляет собой младший адрес из диапазона адресов, выделенных под стек. NtTib.StackBase — это последнее значение регистра ESP. Чтобы определить, возникла ли в одном из битов регистра ESP ошибка, сравните текущее значение регистра ESP со значением NtTib.StackBase.</FONT></DIV> <DIV><FONT size=2 face=Arial></FONT> </DIV> <DIV><FONT size=2 face=Arial>6. Чтобы определить разницу между значениями регистров ESP и EBP, выполните команду .formats esp ^ ebp. Если ошибка не возникала, значение, хранящееся в регистре EBP, будет незначительно отличаться от значения указателя стека, хранящегося в регистре ESP. Как правило, использование этой команды позволяет обнаружить старший бит регистра ESP, содержащий ошибку. Обнаружение данного бита облегчается при отображении результатов в двоичном виде, как показано в следующем примере.</FONT></DIV> <DIV><FONT size=2 face=Arial></FONT> </DIV> <DIV><BR><FONT size=2 face=Arial> 0: kd> .formats esp ^ ebp<BR>Evaluate expression:<BR>Hex: 00080034<BR>Decimal: 524340<BR>Octal: 00002000064<BR>Binary: 00000000 00001000 00000000 00110100<BR>Chars: ...4<BR>Time: Tue Jan 06 17:39:00 1970<BR>Float: low 7.34757e-040 high 0<BR>Double: 2.59058e-318<BR> </FONT></DIV> <DIV><FONT size=2 face=Arial></FONT> </DIV> <DIV><FONT size=2 face=Arial> </FONT></DIV> <DIV><FONT size=2 face=Arial></FONT> </DIV> <DIV><FONT size=2 face=Arial>Если не рассматривать младшие (менее значимые) биты, то значения регистров ESP и EBP отличаются одним битом. Разность этих значений равна 00000000 00001000 00000000 00000000 (в двоичном виде) или 00080000 (в шестнадцатеричном виде).<BR>Это показывает, что в одном из битов регистра ESP возникла ошибка, в результате чего данный регистр содержит неправильное значение, которое приводит к появлению двойного исключения, системной ошибки и аварийному завершению работы системы.</FONT></DIV> <DIV><FONT size=2 face=Arial></FONT> </DIV> <DIV><FONT size=2 face=Arial>Для получения дополнительных сведений об используемом оборудовании выполните следующие действия.<BR>1. Выполните команду !cpuinfo, чтобы получить сведения о процессоре. Ниже показан пример выходных данных команды !cpuinfo.</FONT></DIV> <DIV><FONT size=2 face=Arial></FONT> </DIV> <DIV><BR><FONT size=2 face=Arial> 0: kd> !cpuinfo<BR>TargetInfo::ReadMsr is not available in the current debug session<BR>CP F/M/S Manufacturer MHz Update Signature Features<BR> 0 15,2,9 GenuineIntel 2790>0000000000000000 !cpuinfo<BR>CP F/M/S Manufacturer MHz Update Signature Features<BR>TargetInfo::ReadMsr is not available in the current debug session<BR> 0 15,2,9 GenuineIntel 2994>0000001800000000 !pcitree<BR>Bus 0x0 (FDO Ext 85dceed8)<BR> 0600 00141166 (d=0, f=0) devext 85dcf348 Bridge/HOST to PCI<BR> 0600 00141166 (d=0, f=1) devext 85e110e8 Bridge/HOST to PCI<BR> 0600 00141166 (d=0, f=2) devext 85e11ee8 Bridge/HOST to PCI<BR> 0100 00c09005 (d=2, f=0) devext 85e11ce8 Mass Storage Controller/SCSI<BR> 0100 00c09005 (d=2, f=1) devext 85e11ae8 Mass Storage Controller/SCSI<BR> 0300 47521002 (d=3, f=0) devext 85e11788 Display Controller/VGA<BR> 0200 16a614e4 (d=4, f=0) devext 85e11428 Network Controller/Ethernet<BR> 0880 a0f00e11 (d=5, f=0) devext 85dcdee8 Base System Device/`Other` base system device<BR> 0601 02011166 (d=f, f=0) devext 85dcdb88 Bridge/PCI to ISA<BR> 0101 02121166 (d=f, f=1) devext 85dcd988 Mass Storage Controller/IDE<BR> 0c03 02201166 (d=f, f=2) devext 85dcd628 Serial Bus Controller/USB<BR> 0600 02251166 (d=f, f=3) devext 85dcd2c8 Bridge/HOST to PCI<BR> 0600 01011166 (d=11, f=0) devext 85e100e8 Bridge/HOST to PCI<BR> 0600 01011166 (d=11, f=2) devext 85e10ee8 Bridge/HOST to PCI<BR>Bus 0x2 (FDO Ext 85dcecd8)<BR> 0104 00460e11 (d=2, f=0) devext 85e0f9a8 Mass Storage Controller/RAID Bus 0x5 (FDO Ext 85dce9d8)<BR>No devices have been enumerated on this bus.<BR>Total PCI Root busses processed = 3<BR> </FONT></DIV> <DIV><FONT size=2 face=Arial></FONT> </DIV> <DIV><BR><FONT size=2 face=Arial>Для всех перечисленных PCI-устройств первое шестнадцатеричное значение в каждой строке (это значение состоит из 8 цифр и имеет тип DWORD) представляет собой идентификатор производителя и устройства (VenDev ID). Фактически идентификатор производителя определяется последними четырьмя цифрами. Например, первое устройство в приведенном выше списке имеет идентификатор VenDev ID, равный 0x00141166. При этом идентификатор устройства (Device ID) равен 0x0014, а идентификатор производителя (Vendor ID) — 0x1166. Идентификатор производителя для наборов микросхем ServerWorks равен 0x1166. Это означает, что выше приведен результат работы команды !pcitree на компьютере с системной платой, использующей набор микросхем ServerWorks.<BR></FONT></DIV></BODY></HTML>