[Архив бюллетеней ^] [Том 1, Число 2 >]
Информационный бюллетень внутренних систем 1, номер 1
14 апреля 1999 г. — в этой проблеме:
НОВЫЕ ВОЗМОЖНОСТИ ВНУТРЕННИХ СИСТЕМ
- VolumeID для Windows 9x
- EFSDump
- Список БИБЛИОТЕК DLL для Compaq Alpha
- "Внутри процесса загрузки, часть 2"
- Моя статья журнала Windows NT в апреле
- Нет кредита, где его счет
- Не так-новые вещи
ВНУТРЕННИЕ НОВОСТИ
- Средство проверки драйверов Win2K
- Тестирование Y2K с помощью Boot.ini
ЧТО ПРОИСХОДИТ
- Очереди спинлок в Win2K
- Tokenmon
СПОНСОР: WINTERNALS SOFTWARE
Информационный бюллетень по внутренним системам спонсируется По Winternals, в Интернете http://www.winternals.com. Winternals Software является ведущим разработчиком и поставщиком расширенных системных средств для Windows NT/2K. Продукты Winternals Software включают FAT32 для Windows NT 4.0, ERD Commander (возможность загрузки диска для Windows NT) и NTRecover.
Здравствуйте!
Добро пожаловать в первый выпуск бюллетеня внутренних систем. Я рад сказать, что бюллетень уже приобрел 1000 подписчиков с момента его объявления чуть более недели назад.
Моя цель в бюллетене заключается в том, чтобы дать вам своевременную информацию о новых служебных и статьях, которые появляются в System Internals, а также дать вам тихие сведения о внутренних компонентах Windows, которые не имеют соответствующего форума на веб-сайте System Internals. Если у вас есть комментарии или предложения относительно бюллетеня, вы можете передать их вместе со мной на mark@.... Кроме того, отправьте бюллетень любому, что вы знаете, что может быть заинтересован в нем. Инструкции по подписке, отмене подписки или изменению подписки предоставляются в конце бюллетеня.
Спасибо!
-Метка
НОВЫЕ ВОЗМОЖНОСТИ ВНУТРЕННИХ СИСТЕМ
VOLUMEID ДЛЯ WINDOWS 9X
Хотя Windows NT и Windows 9x позволяют изменять метку на логическом диске или диске с помощью команды label, они не предоставляют никаких средств для изменения идентификаторов томов, которые они произвольно назначают при форматировании дисков. Программа VolumeID, которая была доступна для Windows NT на сайте Внутренних систем в течение более года, только что была перенесена в Windows 9x. Это приложение позволяет изменять идентификаторы томов на жестких дисках и дисках с флоппи-дисками на все, что вы хотите.
VolumeID использует API- интерфейсы, позволяющие приложениям читать и записывать непосредственно на логические диски, а также на физических дисках (дисках floppy), обходя файловые системы. В Windows NT/2K VolumeID использует обычный файл readFile и WriteFile для доступа к данным необработанного диска. Это позволяет определить имя тома, к которому он хочет получить доступ. Вы можете узнать, как получить доступ к физическим или логическим дискам из приложения в Windows NT/2K в статье базы знаний Майкрософт Q100027. Для доступа Windows 9x к логическим дискам можно на основе кода, предоставленного в статье базы знаний Майкрософт Q174569. Если необходимо выполнить прямой доступ к диску floppy из приложения в Windows 9x, используйте VWIN32_DIOC_DOS_INT13 IOCTL Win32, который документируется в MSDN.
Скачать VolumeID по адресу http://www.sysinternals.com/misc.htm.
EFSDUMP
Windows 2000 будет дебютом встроенной технологии шифрования файлов Майкрософт, файловой системы шифрования. При использовании EFS есть ряд новых API для управления зашифрованными файлами, включая один из них QueryUsersOnEncryptedFile, который позволяет узнать, какие пользователи зарегистрированы для доступа к зашифрованным файлам, и какие пользователи зарегистрированы в качестве агентов восстановления для этих файлов. Я написал небольшую программу с именем EFSDump, которая позволяет легко видеть эти сведения для зашифрованных файлов в вашей системе.
Хотя я на тему API EFS, есть несколько новых API, которые не были задокументированы в апреле MSDN, что-то довольно тревожно на этом этапе в цикле выпуска Windows 2000. В частности, OpenEncryptedFileRaw, ReadFileEncryptedRaw, WriteFileEncryptedRaw и CloseEncryptedFileRaw (все экспортируются ADVAPI32.DLL Win2K) все в настоящее время не выполняются. Использование этих API требуется любым приложением, желающим создавать резервные копии зашифрованных файлов, что означает, что корпорация Майкрософт передает сведения только о них, чтобы выбрать партнеров, или компании по резервному программному обеспечению придется схватиться, чтобы получить свои продукты из двери, когда Корпорация Майкрософт в конечном итоге публично документируется. Конечно, разработчики программы NTBACKUP Windows 2000 уже имели доступ к документации по API: NTBACKUP Win2K Beta 3 активно использует API.
Если вы заинтересованы во внутренних системах EFS, обязательно ознакомьтесь с моей предстоящей серии июня и июля в EFS в моем столбце "NT Internals" в Windows NT Magazine. В статье я описываю, где хранятся feks (ключи шифрования файлов) и пользовательские ключи EFS, как выполняется процесс шифрования NTFS, драйвер EFS и LSASRV (сервер подсистемы локального центра безопасности), и, конечно, как работает расшифровка.
Скачайте EFSDump с полным исходным кодом по адресу http://www.sysinternals.com/misc.htm.
LISTDLLS ДЛЯ COMPAQ ALPHA
Количество служебных программ, доступных для альфа-сервера внутренних систем, продолжает расти. Последнее добавление — ListDLLs, программа командной строки, которая позволяет просматривать сведения о библиотеке DLL для выполнения процессов. Средство My HandleEx позволяет просматривать эти сведения, а также сведения об дескрипторах (файлах, процессах, потоках, объектах синхронизации), которые открылись, но HandleEx — это средство графического интерфейса, поэтому его не всегда удобно (например, нельзя запускать внутри пакетного файла).
Вы хотите узнать о соотношении скачиваемых файлов x86-версии типичной служебной программы Internals System Internals с соответствующей альфа-версией? Его около 20:1, который внимательно отслеживает отраслевые оценки установленной пользовательской базы Alpha NT как 5% от общего рынка NT.
Вы можете скачать списки DLL и другие порты Альфа, включая HandleEx, по адресу http://www.sysinternals.com/alpha.htm.
"ВНУТРИ ПРОЦЕССА ЗАГРУЗКИ, ЧАСТЬ 2"
Мой столбец "Nt Internals" из Windows NT Magazine теперь доступен в интернете через веб-сайт Windows NT Magazine. Вы можете найти ссылку на нее, а также столбцы с частью 1 и более старыми столбцами "NT Internals", на странице "Публикации" на странице "Внутренние системы": http://www.sysinternals.com/publ.htm.
МОЯ СТАТЬЯ В АПРЕЛЕ WINDOWS NT MAGAZINE
Кроме того, обязательно ознакомьтесь с моей статьей о функциях в апреле выпуска Windows NT Magazine, Linux и Enterprise. Я показываю несколько важных проблем с ядром Linux 2.2 и сетевыми серверными приложениями (корпоративными приложениями), которые в конечном итоге препятствуют конкуренции этой версии ядра Linux с nt-to-head и другими вариантами UNIX с точки зрения производительности.
НЕТ КРЕДИТА, ГДЕ ЕГО СЧЕТ
В связанной заметке, возможно, вы слышали о недавно выпущенной D.H. Браун (аналитиков компании) в linux в качестве корпоративной операционной системы. Оказывается, что автор отчета сильно "заимствован" из электронной почты моей, что кто-то публично опубликовал в ядре Linux Usenet newsgroup еще в январе. Если у вас есть доступ к отчету и прочитать страницы (44 и 45), обсуждая Linux и мультипроцессоры (отчет не является общедоступным - вы должны приобрести его для кучной суммы), а затем прочитать мою электронную почту в Deja News, вы увидите прямую параллель, вплоть до небольших подробностей.
НЕ ТАК-НОВЫЕ ВЕЩИ
Я использую этот раздел бюллетеня для создания последних изменений на сайте Внутренних систем, о которых вы не знаете, и /или предоставить дополнительные сведения о служебной программе, чем то, что доступно на сайте. Например, пару недель назад мы выпустили Filemon версии 4.1. Эта версия Filemon может отслеживать действия именованного канала и слота почты в Windows NT/2K. Усовершенствование кода, необходимого для поддержки этого кода, было относительно незначительным, так как именованные каналы и почтовые слоты реализованы в качестве драйверов файловой системы. Трудная часть (мучительная) выясняла частные команды ввода-вывода (команды управления ввода-вывода), которые поддерживают эти специальные файловые системы, чтобы Filemon могли показать их. Файл можно скачать (который работает в Windows NT/2K и Windows 9x) http://www.sysinternals.com/filemon.htm.
Если вы хотите узнать больше о том, как Filemon работает внутри организации, см. мой февральский столбец журнала NT Magazine NT "NT Internals", который называется "Внутри служебных программ NT". В этой статье описывается, как использовать Filemon, Regmon, NTFSDOS, NewSID и HandleEx и немного рассказать о том, как они работают.
ВНУТРЕННИЕ НОВОСТИ
СРЕДСТВО ПРОВЕРКИ ДРАЙВЕРА WINDOWS 2000
Windows 2000 Beta 3 представляет собой очень мощную помощь по разработке драйверов устройств под названием Driver Verifier. Это средство работает с кодом в ядре, чтобы получить контроль над драйвером и выполнить его для соблюдения правил режима ядра таким образом, что ранее не было возможным. Драйверы устройств с ошибками на сегодняшний день являются самым значительным вкладом в репутацию многих людей, которые NT является нестабильной операционной системой, и это средство предназначено для восстановления этой репутации, помогая авторам найти свои ошибки перед пользователями.
Несколько типов тонких проблем могут сделать это через случайное тестирование драйверов (наиболее распространенный тип тестирования, выполняемый в условиях жестких ограничений на рынок), и даже проскользнуть через серьезные стресс-тесты. Одна из распространенных проблем с драйвером заключается в том, что драйвер обращается к памяти страниц с повышенными привилегиями IRQL (высокий приоритет прерывания). Если в момент доступа к файлу с разбиением на страницы память, доступ к драйверу происходит физически в момент доступа (он не был выложен в файл разбиения по страницам), то незаконный доступ будет незамеченным. Отпустите драйвер, который нарушает это правило в диком мире пользователей и его привязка, чтобы показаться, что приведет к сбою синего экрана.
Другой тип распространенных ошибок программирования драйверов — это для разработчика, чтобы написать код с предположением, что страница и /или нестраничная память всегда будет доступна, т. е. они не проверяют возвращаемые значения для выделения. Если пул истекает, и драйвер получает адрес буфера NULL, драйвер весело разоменовывает систему на синий экран. Хотя исчерпание пула является редким явлением, это не то, что должно дать системным администраторам синий экран. Связанная ошибка памяти — это переполнение буфера или перезапуск, когда драйвер считывает или записывает за пределы выделенного буфера.
Средство проверки драйверов устраняет проблемы IRQL, заменив вызовы всех функций, которые управляют IRQLs в драйвере (например KeRaiseIrql
, ) KeAcquireSpinLock
соответствующими функциями ядра проверки (VerifierKeRaiseIrql
, VerifierKeAcquireSpinLock
) во время загрузки драйвера. Всякий раз, когда IRQL вызывает или DISPATCH_LEVEL
выше код проверяющего вызывает внутреннюю функцию Диспетчера памяти, MmTrimAllPageableSystemMemory()
чтобы принудительно вывести все страничные данные из физической памяти. Таким образом, момент, когда драйвер нарушает правило IRQL для доступа к данным или коду DISPATCH_LEVEL
с страниц или выше, диспетчер памяти обнаружит попытку доступа к несущей странице и вызовет синий экран. Это позволяет разработчику быстро поймать эти типы ошибок, прежде чем водитель выходит из двери, так как они могут отлаживать аварию и видеть своего водителя, сидящего на стеке сбоя.
Средство проверки драйверов выполняет тестирование использования памяти с исправлением таблицы импорта драйвера, чтобы проверить, чтобы драйвер вызывает функции памяти проверяющего объекта вместо стандартных версий ядра. Например, вызов ExAllocatePool
заменяется вызовом VerifierAllocatePool
. Существует два метода, которые средство проверки использует для быстрого поиска ошибок памяти разработчика. Первый заключается в том, что он использует специальный пул памяти, где страница охранника (страница охранника является недопустимой страницей) помещается только в конце буфера. Кроме того, часть страницы, в которой выделен буфер, предшествующий буферу, заполняется сигнатурой. Перерасходы, находящиеся в пределах страницы за пределами буфера, обнаруживаются немедленно, так как они приводят к незаконным сбоям страницы на странице охранника. Подзапуски, связанные с изменением данных, предшествующих буферу, обнаруживаются проверяющим, когда драйвер освобождает память, так как подпись будет изменена.
Драйверы, которые всегда ожидают, что непустый пул будет обмануть создание сбоев проверяющего с использованием его "внедрения сбоя памяти". Вы можете настроить средство проверки на случайную сбой выделения пула драйверов.
Существует несколько других типов ошибок проверки драйвера, включая согласованность IRP (пакет запросов ввода-вывода) и защиту системных и кодовых страниц драйверов только для чтения.
Если вы являетесь разработчиком драйверов устройств, вы будете делать себя, вашей компании и сообщества NT пользу, проверив с помощью средства проверки. Обратите внимание, что вы также должны протестировать драйверы NT 4.0, совместимые с Win2K, как только у вас есть доступ к средству проверки драйверов (большинство разработчиков получат его с доставкой Win2K Beta 3 в конце апреля или мае).
Дополнительные сведения см. в разделе "Проверка драйверов".
ТЕСТИРОВАНИЕ Y2K С ПОМОЩЬЮ ЗАГРУЗКИ. INI
Если вы часто проверяете веб-сайт внутренних систем, возможно, вы уже знаете о новой незадокументированной загрузке Win2K. Параметр INI, /YEAR. Я не упомянул на веб-сайте, что коммутатор также поддерживается NT 4.0 с пакетом обновления 4 (SP4). Этот коммутатор позволяет спуфингом NT и всем программным обеспечением в системе NT думать, что это другой год. Например, /YEAR=2001 сделает систему думать, что она была 2001 вместо 1999 года. Таким образом, переключатель идеально подходит для тестирования проблем Y2K на любом уровне программного обеспечения, и преимущество использования вместо ручного сброса часов BIOS (например, с помощью часы applet), заключается в том, что изменение является временным и активным только при загрузке установки, которая имеет переключатель в своей ЗАГРУЗКе. Строка INI. Это упрощает создание специальной установки Y2K, просто принимая существующую загрузочную строку из ЗАГРУЗКИ. INI, дедупликация и добавление переключателя /YEAR.
ЧТО ПРОИСХОДИТ
Ожидается следующий бюллетень в течение нескольких недель. Совет внутренних элементов, который я буду иметь для вас в следующий раз о очередь спинлоков, новый тип спинлок, который Windows 2000 использует для своих глобальных спинлоков. Ниже приведены глобальные спинлоки, которые существуют в Windows 2000:
- KiDispatcherLock: блокировка базы данных планировщика
- KiContext-SwapLock: блокировка переключения на поток
- MmPfnLock: блокировка базы данных физической страницы
- MmSystemSpaceLock: блокировка адресного пространства в режиме ядра
- CcMasterSpinLock: глобальная спинлока диспетчера кэша
- CcVacbSpinLock: блокировка сопоставления массива диспетчера кэша
Вместо использования регулярных блокировок ядра (KeAcquireSpinLock, KeReleaseSpinLock) для этих глобальных блокировок как NT 4.0 ядро Windows 2000 использует очереди спинлок (KeAcquireQueuedSpinLock, KeReleaseQueuedSpinLock). Эти блокировки имеют некоторые интересные свойства, которые свести к минимуму активность шины на SMP. В следующий раз я скажу вам, как реализованы очереди спинлок.
В ближайшее время в System Internals — Tokenmon, еще один инструмент мониторинга. Tokenmon отобразит подробные сведения обо всех действиях, связанных с маркерами, в системе, включая имена входа, выходы, использование привилегий и олицетворение.
Благодарим вас за чтение бюллетеня внутренних систем.
Опубликовано в среду, 14 апреля 1999 г. 7:16 вечера по оттох