Розгін ... sound Blaster'а, КомпьютерПресс

се почалося з того, що я, зацікавившись новими мультимедійними командами, зважився придбати Pentium III, оскільки мій дідусь Celeron-300A їх не підтримував. Ясна річ, разом з процесором довелося купити і нову материнську плату, а оскільки на сучасних «мам» ISA-слоти відсутні, то треба було міняти звукову карту Gold Edison на щось новіше. Вибір припав на Sound Blaster-128 PCI від Creative (нічого більш вартісного в магазині і не було).

Нітрохи не прагнучи до чудес продуктивності (і на колишньому процесорі все буквально літало), я все ж сподівався, що Pentium III 733 буде принаймні не повільніше. Але як би не так: продуктивність системи після апгрейда істотно впала і робота з нею перетворилася на суцільну муку. Постійно використовуються мною додатки Adobe Acrobat Reader і комп'ютерний словник Lingvo витримували 5-7-секундну паузу при завантаженні (тоді як раніше вони запускалися практично миттєво), така ж пауза спостерігалася у Microsoft Word і Microsoft Visual Studio при першому зверненні до панелей інструментів і меню. Особливо сповільнилася швидкість відкривання файлів в «Універсальному програвачі»: перш виконуючись практично миттєво, тепер ця операція забирала кілька секунд.

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

Міркував я в такий спосіб. Раз і Word, і Visual Studio, і багато інших додатків при першому зверненні до меню викликають затримку, то очевидно, винуватці не вони, а якийсь системний компонент, що завантажується ними. Якщо цей нещасливий компонент автоматично завантажується разом з самим додатком, то пауза виникає при його запуску (як, наприклад, в Adobe Acrobat Reader). Якщо ж він завантажується динамічно при виникненні в ньому необхідності - затримка з'являється при зверненні до меню.

Завантаживши Word в відладчик і клацнувши мишкою по меню, я із задоволенням відзначив, що в вікні DEBUG з'явилися такі рядки:

Щоб перешкодити цьому, необхідно завчасно видалити winmm.dll з папки WINNT \ system32 \ dllcache, а потім перейменувати winmm.dll будь-що-небудь інше, скажімо в winmm.dl_. Весь фокус у тому, що перейменування використовуваних динамічних бібліотек система не забороняє, автоматично коригуючи всі активні посилання, але після перезавантаження програми будуть як і раніше намагатися завантажити саме winmm.dll (звідки ж їм знати про перейменування?), Але, природно, не знайдуть її (що, мені власне, і потрібно).

Після видалення winmm.dll все гальма миттю зникли, але ... разом з ними зник і звук, а що за комп'ютер без звуку! Правда, таких додатків, як Word, Visual Studio, Adobe Acrobat Reader, звук зовсім ні до чого (у мене, у всякому разі, відключена «озвучка» пунктів меню і закриття / відкриття вікон). Так чому б не підсунути їм «пустушку» - динамічну бібліотеку, що має те ж саме ім'я, але не виконує ніяких дій (просто повертає управління при виклику), а всім іншим додаткам (дійсно потребують звуці) дозволити звертатися до цієї winmm.dll?

Сказано зроблено! Нашвидку склепавши dll'ку, що не експортує жодної функції, я розкидав її по всіх каталогах, в яких знаходилися виконувані файли Word, Visual Studio і інших додатків. Справа в тому, що при завантаженні динамічних бібліотек система спочатку шукає їх в каталозі додатки і тільки потім, якщо її там немає, переходить до системного каталогу Windows.

C Word і Visual Studio цей фокус вдався, а от з Acrobat не пройшов: не сподобалося йому, що в «пустушки» відсутня функція timeGetTime. Але важко, чи що, її створити (тим більше що її прототип присутній в SDK)?

Нарешті з новим комп'ютером стало можна працювати, а не мучитися, як раніше! Просто прелесть - ні гальм, ні затримок! Всі буквально літає: не встигаєш клацнути по іконці, як додаток вже з'являється на екрані! Але подібний «брудний хак» не міг викликати у мене повного задоволення, адже я не знайшов причину Глюка, а всього лише загнав його глибше всередину.

І ось на Новий рік, коли дивом видалося кілька годин вільного часу, я вирішив взяти ворога якщо не штурмом, то облогою. Покроково трассіруя стартову процедуру цієї злощасної DLL, я шукав функцію, що викликає затримку, а знаходячи таку, перебирав всі вкладені в неї функції одну за однією, а потім вкладені у вкладені. (В тому, що гальма викликала якраз стартова процедура, у мене не було ніяких сумнівів, оскільки затримка виникала саме при ініціалізації.)

Через десяток хвилин я був винагороджений! Сліди вели до функції OpenDriver, що виглядало логічно, бо наявність бага в штатної бібліотеці winmm.dll виробництва Microsoft Corporation мені здавалося сумнівним: вона єдина на всі карти, та й з колишнім Blaster'ом працювала без нарікань. А ось драйвер нового Blaster'а - справа інша. Немає нічого неймовірного в тому, що його ініціалізація (чи то пак «відкриття») відбувається із затримкою. Отже, коло підозрюваних звузилося, але все ж не було ясно, хто справжній винуватець: безпосередньо залізяка або її рідний драйвер.

Пройшовшись кілька разів дизассемблером по драйверу Blaster'a, я не знайшов нічого, здатного викликати затримку. Навпаки - дуже акуратний і професійно складений код. Виходить, все ж залізяка. Ех, якби не новорічні свята, можна було б повернути її продавцеві для обміну ... А раптом не залізяка? Може, «мама»? Теоретично міг мати місце конфлікт з контролером PCI-шини або просто кривої контролер ...

Продовжуючи копатися в надрах драйвера, я несподівано помітив, що OpenDriver викликається чотири з послідовною инициализацией портів «wave», «midi», «mixer» і «aux», причому перші три ініціалізації пролітали на ура, а остання-то і викликала затримку. Значить, винна все ж залізяка! AUX-порт на Blaster'е дійсно був (хоча мною ніяк не використовувалася) і навіть успішно функціонував, хоча страшенно повільно ініціалізувати.

Отже, що ж конкретно повинні зробити читачі, які бажають усунути подібний дефект у себе? Розпишу всі дії по кроках.

Крок перший. Зайшовши в систему під ім'ям (або з правами) адміністратора, перемістіть "winmm.dll" з каталогу WINNT \ system32 \ dllcache в який-небудь інший каталог, де ви зберігаєте резервні файли (на той випадок, якщо ви передумаєте і захочете повернути все на місце).

Крок третій. У winmm.dll знайдіть рядок AUX, завершується одним або декількома нулями. Якщо це той рядок, яка вам дійсно потрібна, то поблизу повинні бути рядки WAWE і MIXER або MIDI (в winmm.dll може бути кілька рядків aux, що використовуються різними гілками програми).

Крок четвертий. Забийте рядок AUX нулями (тобто символами з кодом \ x00, а не символами нуля з кодом \ x30). Хоча насправді нулем досить затерти першу букву A, але це буде не так акуратно.

Крок п'ятий. Створіть командний файл такого змісту:

ren WINNT \ system32 \ winmm.dll WINNT \ system32 \ winmm.dl_

ren WINNT \ system32 \ winmm.dl1 WINNT \ system32 \ winmm.dll

і запустіть його на виконання.

Крок шостий. Перезавантажитеся.

Крок сьомий. Видаліть WINNT \ system32 \ winmm.dl_ і створений вами командний файл.

Крок восьмий. Скопіюйте змінену WINNT \ system32 \ winmm.dll в папку WINNT \ system32 \ dllcache.

Зовсім недавно компанія Cougar представила нову серію блоків живлення для традиційних ПК - VTX, орієнтовану на користувачів з обмеженим бюджетом. У цьому огляді буде розглянута модель Cougar VTX600, яка завдяки своїм характеристикам буде однією з найбільш затребуваних в цій лінійці блоків живлення

На щорічному заході Capsaicin SIGGRAPH в Лос-Анджелесі компанія AMD зміцнила свої позиції на ринку ПК класу high-end з новими процесорами Ryzen Threadripper і GPU «Vega»

Для простого і зручного побудови мереж рядовими користувачами компанія ZyXEL випустила чергову версію свого Інтернет-центру для підключення до мереж 3G / 4G через USB-модем з точкою доступу Wi-Fi - ZyXEL Keenetic 4G III, який ми і розглянемо в цьому огляді

До своєї і так великій родині роутерів і маршрутизаторів фірма ASUS недавно додала дві вельми цікаві моделі: флагманську 4G-AC55U і більш просту 4G-N12. У даній статті буде розглянута флагманська модель ASUS 4G-AC55U

Молода, але амбіційна компанія KREZ на початку цього року випустила нову, оригінальну модель ноутбука KREZ Ninja (модель TM1102B32) під керуванням Windows 10. Оскільки цей комп'ютер має поворотний екран, він може служити універсальним рішенням - його можна з успіхом використовувати і для роботи, і для навчання, і для ігор

Якщо ви часто друкуєте фотографії та вже втомилися міняти картриджі в своєму принтері, зверніть увагу на МФУ Epson L850. Великий ресурс витратних матеріалів, чудова якість відбитків, найширший набір функціональних можливостей - ось лише деякі з переваг даної моделі