Массовые музыкальные жанры XX века


Разгон... Sound Blaster'а - часть 2


Перерыв все настойки BIOS, и, даже, переустановив операционную систему (Windows 2000 для справки), я не добился ровным счетом ничего, правда, выяснил, что на Windows 98 все работает отлично – ни задержек, ни тормозов там нет, и все приложения грузятся как из пушки: значительно быстрее, чем раньше. В конце туннеля замаячил свет: раз под Windows 98 система работает, значит, это не аппаратный, а программный глюк Windows 2000. Что ж, будем лечить!

Первым делом требовалось установить, – кто же вызывает задержку. Традиционно такие задачи решаются с помощью профилировщика, но, как назло, ни одного из них не оказалось под рукой, а бежать покупать диск среди глубокой ночи как-то не хотелось. На выручку пришел отладчик, интегрированный в Visual Studio (впрочем, подошел бы и любой другой, например Soft-Ice или Windeb).

Рассуждал я следующим образом: "раз и Word, и Visual Studio, и многие другие приложения при первом обращении к меню вызывают задержку, очевидно, виновники не они, а какой-то системный компонент, загружаемый ими. Если этот зловредный компонент автоматически загружается вместе с самим приложением, то пауза возникает при его запуске (как, например, в Adobe Acrobat Reader). А если же он загружается динамически – при возникновении в нем необходимости, – задержка появляется при обращении к меню".

Загрузив Word в отладчик и щелкнув мышкой по меню, я с удовлетворением отметил, что в окне "DEBUG" появились следующие строки:

Loaded 'C:\WINNT\system32\winmm.dll', no matching symbolic information found. Loaded 'C:\WINNT\system32\wdmaud.drv', no matching symbolic information found. Loaded 'C:\WINNT\system32\wdmaud.drv', no matching symbolic information found. Loaded 'C:\WINNT\system32\wdmaud.drv', no matching symbolic information found.

Ага! Все-таки что-то грузится! Остается только разобраться что… Заглянув в Platform SDK, я выяснил, что динамическая библиотека "winmm.dll" обеспечивает работу со звуком и мультимедиа, а, загрузив ее в HEX-редактор, быстро нашел текстовую строку "wdmaud.drv", красноречиво свидетельствующую о том, что драйвер "wdmaud.drv" грузит не кто иной, как "winmm.dll".




Начало  Назад  Вперед