Работа с системным реестром Windows XP


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


Окно HKEY_LOCAL_MACHINE после



Рисунок 15.3. Окно HKEY_LOCAL_MACHINE после загрузки раздела System из поврежденной копии Windows XP

4. Раскройте куст oldsystem, найдите в составе ключа HKEY_LOCAL_ MACHINE\SYSTEM\Contix)lSetca\Gontrol\CrashControl параметр AutoReboot и установите его значение в 0 (эту операцию надо проделать для всех наборов Con trolSetxxx).

5. Сверните ключ HKEY_LOCAL_Mb\CHINE, выделите куст oldsystem и выберите в меню Реестр команду Выгрузить куст.

Предупреждение

При загрузке некоторого куста размер реестра увеличивается и может превысить максимальное допустимое значение. Поэтому перед операцией загрузки рекомендуется проверить текущий размер реестра в окне Виртуальная память (Рисунок 15.2) и при необходимости увеличить его.

Шаг 2. Если после перезагрузки "синий экран" больше не появляется t то проблема решена (хотя бы временно). Не забудьте после запуска Windows XP просмотреть журнал системных событий. (Возможно, именно там вы обнаружите сообщения об ошибках, которые позволят идентифицировать источник проблемы.) Для этого запустите оснастку Просмотр событий (Event Viewer).

Шаг3. Если ошибка STOP появилась при первой же перезагрузке компьютера после установки нового оборудования или Дополнительного программного обеспечения, и вы еще не регистрировались в системе, то попробуйте перезагрузить компьютер, и при появлении списка доступных операционных систем нажмите клавишу <F8>. В появившемся меню выберите опцию Загрузка последней удачной конфигурации (Last Known Good Configuration). Перезагрузка компьютера с использованием последней успешно загруженной конфигурации удалит все конфигурационные изменения, внесенные с момента последней успешной загрузки Windows XP.

Шаг 4. Если Windows XP все же не может нормально стартовать, попробуйте выполнить загрузку в безопасном режиме (safe mode), а затем блокировать или удалить вновь установленные программы и драйверы (подробная информация об опциях отладочного меню, выводимого при загрузке Windows XP по нажатии клавиши <F8>, приведена в главе 8). Просмотрите последнюю версию списка совместимых аппаратных средств (Hardware Compatibility List, HCL) и проверьте, все ли аппаратные средства, установленные на компьютере, присутствуют в этом списке. Убедитесь в правильности подключения всех вновь установленных устройств. Попробуйте отключить новые устройства или заменить их (возможно, именно это и решит проблему), а также запустить диагностическое программное обеспечение, полученное от поставщика данного компьютера. Особое внимание следует уделить тестированию памяти.

Шаг 5. Выполните сканирование компьютера на вирусы с помощью новейшей версии антивирусного программного обеспечения, совместимого с Windows XP. Вирусы могут повреждать как тома FAT, так и тома NTFS, и эти повреждения могут проявляться как ошибки STOP.

Шаг 6. Просмотрите базу знаний Microsoft, выполнив поиск по ключевым словам winnt и конкретному коду ошибки. Более подробная информация о Microsoft Knowledge Base приведена в последнем разделе данной главы, в списке источников дополнительной информации.

Наиболее распространенные ошибки STOP

Этот раздел содержит краткую информацию и инструкции по устранению наиболее часто встречающихся ошибок STOP. Представленные здесь материалы собраны на основании статей Microsoft Knowledge Base, а также документации, входящей в состав Windows XP Resource Kit. Если, несмотря на все предпринятые вами меры, ошибка продолжает появляться, обратитесь в службу технической поддержки.

STOP 0х00000000А - IRQL_NOT_LESS_OR_EQUAL

Это сообщение STOP, известное также под названием STOP OxA, указывает на то, что процесс режима ядра пытался получить доступ к участку памяти на слишком высоком уровне запроса прерывания (Interrupt Request Level, IRQL), в то время как такие процессы могут получать доступ только к процессам с IRQL не более высоким, чем их собственный,

Рекомендации. Чаще всего эта ошибка бывает вызвана некорректно работающим драйвером устройств, системным сервисом или BIOS. Чтобы попытаться быстро выполнить восстановление после такой ошибки, попробуйте перезагрузить компьютер, при появлении списка доступных операционных систем нажмите клавишу <F8> и выберите опцию Загрузка последней удачной конфигурации.

Примечание

Использование этой опции наиболее эффективно, если установка драйверов, сервисов и устройЬтв производится по одному за раз

Если сообщение появляется во время установки Windows XP, просмотрите HCL и убедитесь в том, что все установленные на компьютере периферийные устройства перечислены в этом списке.

Более подробная информация об диагностике ошибок STOP 0xA приведена в статье из MicrosQft, Knowledge, Base "Troubleshooting: 'Stop 0x0A' Messages in Windows XP которую можно найти по адресу http://support.microsoft.com /supportAb/articles/ql65/8/63.asp

STOP 0x0000001 Е - KMODE_EXGEPTION_NOT_HANDLED

Это сообщение STOP, известное также как STOP Ox IE, указывает на то, что процесс режима ядра пытался выполнить недопустимую инструкцию.

Рекомендации. Проблема может быть вызвана несовместимыми аппаратными средствами, некорректно работающим драйвером или системным сер-

висом. Как правило, второй параметр этого сообщения идентифицирует проблемный драйвер или устройство его адресом (иногда может указываться имя этого драйвера). Попробуйте загрузить компьютер в безопасном режиме и блокировать указанный драйвер. Если это не поможет, то, как правило проблему можно решить с помощью консоли восстановления (Recovery Console) (см. главу 8).

В ряде случаев может помочь блокирование кэширования памяти через программу BIOS Setup.

STOP 0x00000024 - NTFS_FILE_SYSTEM

Это сообщение, известное также как STOP 0x24, указывает на проблему с драйвером Ntfs.sys, позволяющим системе выполнять чтение информации с томов NTFS и запись на такие тома.

Рекомендации. Чаще всего ошибка вызвана повреждением файловой системы NTFS или сбойными кластерами на жестком диске. Поврежденные драйверы SCSI и IDE также вызывают эту ошибку.

Рекомендации, позволяющие избежать ошибки такого рода приведены в начале главы 8. Если ошибка все же возникла, запустите программу Chkdsk /f /r для устранения повреждений файловой системы.

STOP OX0000002E - DATA_BUS_ERROR

Появление сообщения STOP Ox2E обычно указывает на ошибку четности в системной памяти. Эта ошибка всегда вызывается проблемами с аппаратными средствами, ошибками, допущенными при их конфигурировании, а также несовместимыми или дефектными аппаратными средствами.

Рекомендации. Если ошибка возникла после установки нового аппаратного компонента, попробуйте удалить вновь установленное оборудование. Запустите диагностические утилиты, полученные от поставщика аппаратных средств. Иногда ошибка может быть вызвана повреждением жесткого диска, — в этом случае воспользуйтесь консолью восстановления (Recovery Console).

STOP 0x00000050 - PAGE_FAULT_IN_NONPAGED_AREA

Эти сообщения (STOP 0x50) появляются, когда запрошенные данные не найдены в памяти. Система при этом генерирует так называемую страничную ошибку или страничное прерывание (page fault),/которая при обычных условиях означает, что система ищет данные в файле подкачки (paging file), В этом случае, однако, искомые данные идентифицируются системой как находящиеся в резидентном, невыгружаемом пуле (nonpaged pool), а это значит, что они ни при каких обстоятельствах не могли быть сброшены на диск. Таким образом, система не может найти требуемые данные и, следовательно, не может продолжать работу. Этот тип ошибки может быть вызван дефектными аппаратными средствами, некорректно работающим системным сервисом, резидентным антивирусным программным обеспечением, несовместимым с Windows XP, и повреждениями файловой системы NTFS.

Рекомендации. Если ошибка произошла сразу же после установки нового устройства, попробуйте удалить его, чтобы проверить повторяемость ошибки. Чтобы исключить отказ уже установленных аппаратных средств, запустите диагностическую утилиту, полученную от поставщика компьютера (чаще всего эта ошибка генерируется дефектными микросхемами RAM).

В случае несовместимых или некорректно работающих системных сервисов можно попытаться использовать последнюю успешно загруженную конфигурацию (см. главу 8). Если проблема вызвана повреждением тома NTFS, ее поможет решить запуск программы Chkdsk /f /r. Иногда помогает запрет кэширования памяти в BIOS.

STOP 0x00000077 - KERNEL_STACKJNPAGE_ERROR

Сообщения STOP (STOP 0x77) указывают, что ядро не может прочесть запрошенную страницу из файла подкачки.

Рекомендации. Чаще всего причину возникновения этой ошибки можно определить по второму параметру сообщения (значение этого параметра следует записать). Список наиболее распространенных кодов приведен ниже:

0хС000009А - STATUS_INSUFFICIENT_RESOURCES. Недостаточный объем нерезидентного (выгружаемого) пула.

0хС000009С - STATUS_DEVICE_DATA_ERROR. Чаще всего является результатом появления плохих блоков на жестком диске.

0xC000009D- STATUS_DEVICE_NOT_CONNECTED. Чаще всего указывает на неправильное подключение жесткого диска.

0хС00001бА - STATUS_DISK_OPERATION_FAILED. Чаще всего вызывается плохими блоками на жестком диске.

0Xc0000ISS — STATUS_IO_DEVJCE_ERROR. Чаще всего возникает при неправильном подключении устройств SCSI или при попытке двух устройств использовать одно и то же прерывание.

Это наиболее распространенные коды, полный список можно найти в файле Ntstatus.h, входящем в состав продукта Windows XP Device Driver Kit (DDK).

STOP 0x00000079 - MISMATCHED_HAL

Эти сообщения (STOP 0x79) появляются при несовпадении уровня аппаратных абстракций (HAL) и ядра или типа компьютера, в основном, при смешении конфигурационных файлов однопроцессорной и многопроцессорных систем в пределах одной системы.

Рекомендации. Чаще всего эта ошибка возникает после ручной модификации или переписывания файлов Ntoskrnl.exe и Hal.dll. Эта ошибка может также указывать на несовпадение версий этих файлов (например, версия HAL предназначена для Windows NT 4.0, а версия ядра — для Windows XP). Возможно также, что на компьютере по ошибке используется мультипроцессорный HAL и однопроцессорное ядро (или наоборот). Для устранения этой проблемы необходимо использовать диск аварийного восстановления (ERD) или консоль восстановления (см. главу 8).

STOP 0x0000007А - KERNEL_DATA_INPAGE_ERROR

Это сообщение (STOP 0x7А) указывает на то, что запрошенная страница данных ядра не могла быть считана в память из файла подкачки. Обычно ошибка вызвана появлением плохих блоков в файле подкачки, вирусами, ошибками контроллера жесткого диска или дефектной RAM.

Рекомендации. Выполните сканирование системы на вирусы, проверьте правильность подключения дисков и запустите диагностические утилиты, полученные от поставщика аппаратных средств. В случае необходимости проведите восстановление системы с помощью консоли восстановления.

STOP 0х0000007В - INACCESSIBLE_BOOT_DEVICE

Это сообщение (STOP 0x7B) появляется в процессе запуска системы и указывает на то, что в процессе загрузки ОС Windows XP потеряла доступ к загрузочному диску.

Рекомендации. Причиной возникновения ошибки могут быть сбой загрузочного диска, поврежденный драйвер загрузочного устройства, повреждение системного раздела, установка нового адаптера SCSI или контроллера жесткого диска.

Возможно, проблема может быть решена редактированием файла Boot.ini. Более подробную информацию по данному вопросу можно найти в статье из Microsoft Knowledge Base "BOOT.INI and ARC Path Naming Conventions and Usage " (http://support.microsoft.eom/support/kb/articles/ql02/8/73.asp) Если такая ошибка возникает в процессе установки системы, возможно, используется несовместимый жесткий диск или контроллер SCSI. Если программа Setup автоматически распознала контроллер, возможно, при установке системы следует пропустить фазу детектирования (поиска оборудования) и вручную указать драйвер, который должен быть загружен. Для этого: когда система на текстовой фазе инсталляции предложит нажать клавишу <F6>, чтобы указать драйвер накопителя вручную, следует нажать клавишу и вставить дискету с драйвером, полученным от поставщика этого устройства.

Если в системе недавно было установлено новое устройство (особенно жесткие диски или контроллеры), поможет выбор опции Загрузка последней удачной конфигурации в меню, выводимом после нажатия клавиши <F8>.

Наконец, эта ошибка может быть следствием повреждения жесткого диска. Если ошибка появляется раньше, чем вы можете зарегистрироваться в системе, запустите консоль восстановления и дайте команду chkdsk /f /r.

STOP OX0000007F - UNEXPECTED_KERNEL_MO0E_TRAP

Сообщения STOP 0x7F указывают на фатальную ошибку, вызванную программным прерыванием. Иногда эти ошибки могут быть вызваны программным обеспечением, но в большинстве случаев они являются следствием аппаратного сбоя.

Рекомендации. Первый и самый главный параметр этого сообщения (0х0000000х) принимает различные значения в зависимости от типа ошибки (полный список всех кодов можно найти в Windows XP Device Driver Kit).

Если ошибка происходит после установки нового устройства, и после установки этого устройства вы еще не регистрировались в системе, положение может исправить использование опции Загрузка последней удачной конфигурации.

Убедитесь в том, что все жесткие диски, контроллеры и адаптеры SCSI перечислены в HCL и установлены правильно. Чтобы исключить аппаратный сбой одного из устройств, которое раньше работало нормально (особенно это относится к памяти), запустите диагностические утилиты, полученные от поставщика компьютера. Следует отметить, что эта ошибка может также быть вызвана неумелым разгоном процессора (в этом случае верните процессор к его штатной тактовой частоте).

STOP ОхС000021 А - STATUS_SYSTEM_PROCESS_TERMINATED

Редкий случай, когда сообщение STOP вызвано сбоем сервиса, работающего не в режиме ядра, а в режиме пользователя. Это сообщение (STOP 0xC21A) появляется когда одна, из подсистем (например, Winlogon или CSRSS), настолько повреждена, что Windows. XP не может гарантировать безопасности и переключается в режим ядра с генерацией .этой ошибки.

Рекомендации. Подробную информацию о кодах статуса этой ошибки (первый из трех параметров) можно найти в файле Ntstatus.h, входящем в состав программного продукта Windows XP Device Driver Kit (DDK).

Поскольку ошибка STOP OxC21A происходит в режиме пользователя, наиболее .вероятной ее причиной являются плохо работающие приложения третьих фирм. Воспользуйтесь опцией Загрузка последней удачной конфигурации.

STOP OxC0000221 - STATUS _IMAGE_CHECKSUM_MISMATCH

Это сообщение STOP (STOP OxC221) указывает на повреждение драйвера или системного файла DLL. Как правило, в сообщении STOP указывается имя файла, вызвавшего проблему.

Рекомендации. См. главу 8.

Отладка ядра

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

В первую очередь необходимо определить некоторые общие термины и процедуры, которые потребуются при отладке сообщений ядра STOP.

Сообщение STOP, "синий экран" или прерывание

Когда операционная система Windows NT/XP сталкивается с аппаратными проблемами, противоречивостью данных, необходимых для ее работы, или иными подобными ошибками, она обрабатывает эту ситуацию на основании информации, введенной в диалоговом окне Загрузка и восстановление.

Если пользователь в этом диалоговом окне не указал опцию Выполнить автоматическую перезагрузку, Windows NT/XP отображает синий экран, на который выводится информация об ошибке, после чего работа операционной системы останавливается.

В Базе знаний Microsoft и другой документации по Windows NT/XP это состояние часто называется "синим экраном" (blue screen), ошибкой ядра (kernel STOP error) или программной ловушкой (software trap). Все эти термины используются для обозначения таких состояний операционной системы, когда ядро, обнаружив ошибку, может выполнить запись в файл Дампа памяти (эта процедура может являться частью процесса обработки ошибки).

Символы и деревья символов

Как правило, при компиляции кода могут быть созданы две версии исполняемого файла — отладочная версия (debug version, известная также под названием checked version) и обычная (nodebug или free). Отладочная версия содержит дополнительный код, который позволяет разработчику отлаживать программу. Файл отладочной версии имеет больший размер и исполняется медленнее. Обычная версия исполняемого файла компактнее и исполняется быстрее, но не позволяет осуществлять отладку.

Все исполняемые файлы, DLL, драйверы и другие программы представляют собой обычные (неотладочные) версии. Каждому программному файлу ставится в соответствие символьный файл, который содержит отладочный код. Отладочная версия Windows XP, а также инструкции по ее установке входят в состав программного продукта Windows XP Device Driver Kit (DDK). Отладочная версия находится в подкаталоге Symbols, который содержит подкаталоги для файлов каждого типа (exe, dll, sys). Эта структура называется символьным деревом (symbol tree).

Утилитам, используемым для отладки Windows NT/XP или для интерпретации файлов дампа памяти, требуется символьное дерево, в котором содержатся символьные файлы соответствующей версии Windows NT/XP (на момент, когда имеет место ошибка ядра STOP). Некоторые утилиты требуют, чтобы подкаталог \Symbols находился на жестком диске в каталоге %SystemRoot%. Некоторые утилиты допускают указание пути к подкаталогу \Symbols в качестве одной из опций командной строки (в режиме командной строки или в диалоговом окне).

Отладка ядра требует наличия двух компьютеров — так называемого целевого компьютера (target machine) и хост-компьютера (host machine).

Целевой компьютер

Термин "целевой компьютер" (target computer) относится к компьютеру, на котором происходит ошибка ядра STOP. Именно этот компьютер и является отлаживаемым. Он может располагаться где угодно — как в нескольких шагах от компьютера, на котором работает отладчик, так и на достаточно большом расстоянии (связь можно поддерживать через модем).

Хост-компьютер

Термин "хост-компьютер" (host computer) в данной главе относится к компьютеру, на котором вы запускаете отладчик. Этот компьютер должен работать под управлением версии Windows XP, по крайней мере такой же (или более новой), как и отлаживаемый компьютер.

Отладчик ядра

Программный продукт Windows XP DDK содержит графический отладчик WinDbg, применяемый для отладки драйверов и приложений, работающих как в режиме пользователя, так, и в режиме ядра. Подробная информация об использовании и конфигурировании отладчика содержится в файле справочной системы, поставляемом в комплекте с отладчиком.

Отладчик можно использовать как для локальной, так и для удаленной отладки ядра. Если вы применяете локальную отладку, то хост-компьютер находится в нескольких шагах от целевого и взаимодействует с ним через

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

Оба компьютера обмениваются отладочной информацией через коммуникационные порты. Порты на обоих компьютерах должны быть сконфигурированы на одну и ту же скорость передачи данных, выраженную в битах в секунду (бит/с).

После появления "синего экрана" запишите всю важную информацию, которая была выведена в сообщении, и перезагрузите компьютер. Возможно, вам потребуется сконфигурировать целевой компьютер для локальной, ил и удаленной отладки и перезагрузить систему еще раз. После этого вы можете работать с Windows XP до тех пор, пока сообщение не появится снова. Когда "синий экран" появится еще раз, обратитесь к местному специалисту технической поддержки за помощью. На этом этапе можно решить, как будет проводиться отладка (локально или удаленно). Специалисты технической поддержки могут проинструктировать вас по вопросам конфигурирования системы для отладки.

Установка отладочного сеанса

Если принято решение использовать отладчик ядра для анализа ошибки ядра STOP, вам потребуется установить хост и соединить целевой и хост-компьютеры. Для этого необходимо использовать нуль-модемный кабель (в случае проведения локального отладочного сеанса) или модемный кабель (в случае удаленной отладки).

Прежде чем начинать отладку, выполните подготовительные действия:

1. Установите соединение между двумя компьютерами через модем или нуль-модемный кабель.

2. Сконфигурируйте целевой компьютер для отладки.

3. Установите в хост-системе символьное дерево.

4. Установите в хост-системе отладчик.

5. Запустите отладчик в хост-системе.

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

Чтобы сконфигурировать систему для удаленной отладки, необходимо изменить загрузочные опции Windows XP таким образом, чтобы на этапе за-

грузки выполнялась загрузка отладчика ядра. На платформах х86 это делается nyfeivr редактирования файла Boot.ini. Кроме того, необходимо подключить внешний модем к соответствующему СОМ-порту целевого компьютера и соединить его с входным (inbound) телефонным каналом.

Установка модема на целевом компьютере. Чтобы установить сеанс удаленной отладки, необходимо подключить к целевому компьютеру внешний модем и переконфигурировать параметры модема таким образом, чтобы они соответствовали требованиям отладчика ядра. Чтобы сконфигурировать модем; необходимо иметь возможность запустить программу Terminal.exe или другую подобную коммуникационную утилиту. Если запуск таких программ на левом компьютере невозможен, сконфигурируйте модем на другом компьютере, имеющем близкие конфигурационные параметры. Подключите сконфигурированный модем к целевому компьютеру и убедитесь, что он работает., Использование внутренних модемов в данном случае невозможно, так ,как при перезагрузке система сбрасывает изменения, внесенные в их конфигурацию.

Модем необходимо подключить к свободному СОМ-порту и установить конфигурационные параметры:

Auto answer mode

Hardware compression

Error detection

Flow control .

On

Disabled

Disabled

Disabled

Рекомендуются скорости передачи данных: 9600 бит/с для систем х86

Просмотрите документацию по модему и найдите правильные значения строк дли процесса удаленного конфигурирования.

Редактирование файла Boot.ini на целевом компьютере. Чтобы сконфигурировать отлаживаемый компьютер для проведения сеанса отладки, необходимо отредактировать опции загрузки в файле Boot.ini таким образом, чтобы Windows NT загрузила отладчик ядра.

Опции отладчика. Ниже перечислены опции отладчика, которые можно использовать при конфигурировании системы для сеанса отладки.

/Debug

Приводит к загрузке отладчика на этапе загрузки системы. Отладчик остается в памяти компьютера в течение всего времени работы. Это означает, что специалист из группы поддержки может через модем вмешаться в работу отладчика, даже если система не зависла и сообщение STOP не появилось

/Debugport

Указывает последовательный порт, который должен использоваться отладчиком ядра. Если последовательный порт не указан, на компьютерах х86 отладчик по умолчанию будет использовать порт COM2

/Crashdebug

Отладчик загружается при загрузке системы, но остается неактивным до тех пор, пока не произойдет сбой. Это позволяет другим приложениям использовать указанный СОМ-порт (по умолчанию используется СОМ1) в течение всего времени, пока система еще работает

/Baudrate

Задает скорость передачи данных, которую будет использовать отладчик ядра. По умолчанию задается скорость 19 200 бит/с, которая является нормальной при удаленной отладке через модем

Чтобы сконфигурировать отлаживаемый компьютер на платформе х86, отредактируйте файл Boot.ini при помощи стандартного текстового редактора и добавьте в этот файл соответствующие опции отладчика.

Дополнительные источники информации

К сожалению, здесь невозможно более подробно описать интереснейшую и увлекательнейшую (хотя и весьма сложную) тему устранения ошибок STOP, анализа аварийного дампа и работу с отладочным сеансом.

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

http://msdn.microsoft.com/developer/wmdowsXP — масса полезной информации для разработчиков, в том числе можно загрузить версию Windows XP Device Driver Kit.

http://mspress.mkrosoft.com/Reslink — информация о продуктах Resource Kit.

http://www.microsoft.com/hwdev/driver/Ntdebugging.htm — ссылки на дополнительные источники с информацией по отладке.

http://www.microsoft.com/HWTEST/sysdocs/ntdebug.htm — полный справочник по отладке, начиная с установки отладочного режима и заканчивая подробным списком всех команд отладчика ядра.

http://support.microsoft.com/support/ — статьи Microsoft Knowledge Base, содержащие полную и подробную информацию об устранении ошибок STOP.

">