Jul 10

STOP: 0x0000007F (BSoD/Син Екран)

[UPDATED: 2010.07.19]

Доста интересна случка имах преди време: трябваше да погледна един компютър (Windows XP), който от около месец проявява един много досаден симптом – рестартира се спонтанно. Причините? Вероятно са много 🙂 В такива моменти човек все трябва да започне от някъде. Аз тръгнах от тук: какво значи “спонтанно рестартиране”?

Но първо нека видим пътищата, през които преминава един “спонтанен” рестарт (обобщавам два случая):

  1. Windows работи -> хардуерна случка/проблем -> блокиране на ОС или мигновено рестартиране на машината;
  2. Windows работи -> възникване на неочакван проблем в ядрото (Kernel-а) -> запис на minidump файл в %systemroot%\minidump -> рестартиране на машината.

В Windows Minidump е файл, в който се записва информация за състоянието на регистрите на процесора, call stack-а, заредените модули и др. в момента на възникване на фаталната грешка. След това файлът може да се анализира с debugger и евентуално да се открие и отстрани причината.

Знаейки това, можем да категоризираме причините:

  1. Хардуерен проблем (лошо захранване/лош контакт между някой от компонентите и съответния му слот/бъгава памет/издути кондензатори/студена спойка и т.н.) – тук, за съжаление, няма да имаме никаква следа в логовете на Windows;
  2. Софтуерен проблем (проблемни драйвери) – в този случай ще се генерира minidump;
  3. Микс: хардуерен проблем предизвиква софтуерния – тук отново имаме сламка: генерира се minidump.

Continue reading

Jun 03

Мистерия: if (something==NULL) или if (NULL==something)?

Нека разгледаме следния програмен отрязък:

[code lang=”C”]if (NULL == someApiPointer)
{
//do something here
};[/code]

Защо сравняваме NULL със стойността на someApiPointer, а не обратното – както сани учили в училище и както изглежда по-логично?
Когато за първи път срещнах подобна конструкция си помислих, че има нещо специално в нея – прави се от гледна точка на сигурността или пък е нов стил на писане?

Continue reading

Sep 11

How-To: Инсталиране на .inf файлове през Command Prompt чрез RunDLL32.exe

Сигурно знаете, че .INF файловете в Windows служат и за инсталиране на драйвери. Те съдържат информация за това какво, къде, как и под какво име да бъде копирано и т.н. Ако отворите папката с драйверите за Вашата LAN карта (например) ще намерите разнообразни файлове, но и поне един .INF. Избирайки го с десен бутон на мишката ще видите в контекстното му меню опция “Install”. Ако я изберете Windows ще копира необходимото в %SYSTEMROOT%\System32, %SYSTEMROOT%\inf ит.н. От тук на сетне Windows ще знае какво да прави, когато физически добавите LAN картата, чиито драйвери инсталирахте преди малко.

Често .INF файловете се използват и при други случаи. В статията “Интересен Син екран или какви са последствията от кирилицата на ИнжИнера”съм добавил архив на фонетична клавиатурна подредба. Ако го отворите ще видите само три файла: bpnom.inf, kbdbp$$$.dll и инструкция за инсталация, в която пише:маркирайте .INF файла и да щракнете върху INSTALL:

[singlepic=176]

Това обаче е GUI варианта. Ами ако трябва да инсталираме клавиатурната подредба чрез startup скрипт, без намесата на потребителя и неговата мишка?

В статията ще разгледаме именно автоматизираната инсталация на фонетичната клавиатурна подредба. По аналогичен начин може да използвате идейката за подобни случаи.

Continue reading

Aug 19

The device driver for the [network adapter name] is preventing the machine from entering Standby or Hibernation

   От време на време ми се случва точно това. А аз активно използвам режима Hibernate и не мога да се лиша от тази благинка – не обичам, а и не ми се налага да си рестартирам лаптопа често (въпреки, че използвам Windows).

Пълното съобщение е:

The device driver for the network adapter name is preventing the machine from entering Standby or Hibernation. Please close all applications and try again. If the problem persists, you may need to update the driver.

[singlepic=162,50]

Continue reading

Jul 25

Безплатен MySQL под Windows за сметка на?

MySQL е доста разпространена база данни. Причините са много: безплатен (само т.нар. Community Server), с отворен код, има версии за линукс и Windows, производителен е, “просто работи”,работи в мрежаи т.н. Под Windows можете да го инсталирате като самостоятелен продукт или в комплект с php иApache(wamp, xampp). Често се инсталира на работна станция от хора, които разработват web или други приложения.

И всичко щеше да е много хубаво, ако след излизане от режим hibernate не ми се случваше това:

[singlepic=157,260]

Continue reading