Зачем нужна маска KEY_WOW64_RES?

Наткнулся на вопрос на форуме iXBT. В Windows SDK помимо флагов KEY_WOW64_64KEY и KEY_WOW64_32KEY определена маска KEY_WOW64_RES. Зачем она нужна? #ifndef KEY_WOW64_RES #define KEY_WOW64_RES (KEY_WOW64_64KEY | KEY_WOW64_32KEY) #endif Ответ: по большому счету она не нужна. В коде Wow64 она используется для выделения флагов KEY_WOW64_64KEY и KEY_WOW64_32KEY из маски доступа для дальнейшей обработки. Указывать оба флага (и KEY_WOW64_64KEY и KEY_WOW64_32KEY) при вызове RegCreateKeyEx, RegOpenKeyEx или RegDeleteKeyEx нельзя, так что приложениям эта маска ни к чему. Read On →

Бесконечная война

Спаммеры и любители лёгких денег в Интернете повадились оставлять комментарии-пустышки с единственной ссылкой на какой-нибудь левый сайт. Цель этого мероприятия, как я понимаю, поднять PR рейтинг этого сайта. Причем, судя по осмысленности текста, оставляют их явно живые люди, а не боты. Или боты нынче тест Тюринга научились проходить. Так или иначе, испортить день спаммеру - наша священная обязанность. Теперь в форме комментария непустое поле «Website» будет авторизироваться как OpenID URL.

Почему форматы файлов Microsoft Office настолько сложны?

Вслед за публикацией спецификаций, описывающих формат файлов Microsoft Office, Joel Spolsky написал неплохую статью, объясняющую почему формат этих файлов настолько сложен и, на первый взгляд, специально запутан до невозможности. A normal programmer would conclude that Office’s binary file formats: are deliberately obfuscated are the product of a demented Borg mind were created by insanely bad programmers and are impossible to read or create correctly. Если коротко, то проблема в том, что эти форматы имеют длинную историю и при их разработке преследовались совсем другие цели нежели преследовались бы при разработке формата «офисных» файлов сейчас. Read On →

Помните, как я ругался на функцию GetRawInputDeviceList?

Оказалось, что это была ошибка в документации. Её поправили и посмотрите, что получилось.

Read On →

Ввод регистрационного номера программы. Ну почему всё так непросто?

Некоторое время назад я занимался жутко интеллектуальной деятельностью - ручной проверкой результатов автоматического теста, проверяющего корректность работы популярных приложений на данной сборке операционной системы. Проще говоря, этот тест устанавливает OS, затем ставит приложение из списка и проверяет базовую функциональность на предмет не поломалось ли чего. Если что-то идет не так, то тест сообщает о найденных проблемах. Такой себе regression testing для самой OS.

Read On →

Меркурий вблизи

Это уже совсем не новость, конечно. 14-ого января Messenger пролетел в двух сотнях километров от поверхности Меркурия. Это первое посещение планеты за более чем 30 лет со времен полёта Mariner 10. В отличие от своего предшественника, Messenger должен выйти на орбиту Меркурия 18 марта 2011 года, выполнив еще два пролёта в октябре 2008 и сентябре 2009 года. Кроме всего прочего, планируется полностью картографировать поверхность с разрешением 250 метров на пиксель. Будет в Google Earth слой Mercury, как пить дать. Read On →

Кстати ещё одна причина, почему DllMain должна выполнять как можно меньше работы...

…это возможность распараллелить код инициализации подсистем по разным процессорам. Учитывая скорость распространения многоядерных процессоров это становиться актуальной задачей. Вынести большую часть кода из DllMain и конструкторов статических объектов не сложно. Достаточно оформить доступ ко всем подсистемам через singleton-подобный интерфейс, защищённый критической секцией. Сложнее - выстроить зависимости между подсистемами так, чтобы инициализация выполнялась как можно позже, когда все рабочие потоки созданы и готовы к работе. Не менее важно и не перестараться с отложенной инициализацией. Read On →

Возвращаясь к теме про фаззеры

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

Read On →

Пикник на обочине или не ходите, дети, в DllMain гулять, а то ноги оторвёт

Точка входа в DLL, так же как и точка входа в программу, - это очень специальное место. Зона. В Зоне действуют свои правила касательно того, что можно делать, а что делать нельзя. В Зоне можно инициализировать локальные данные DLL, можно создавать критические секции. В Зоне нельзя динамически загружать другие Модули или создавать потоки. Любой Сталкер знает и следует правилам Зоны. Все остальные рано или поздно нарушают правила и расплачиваются за это.

Read On →

Отличный совет

Только что получил чудесный комментарий в ответ на вопрос по хороший курс лекций по C# для непрограммиста. Орфография оригинала сохранена. Выделение моё: Как насчёт того, чтобы почитать MSDN Library? :)Настоятельно рекомендую иметь у себя Offline версию. Ибо, ИМХО, удобнее. Очень актуальной будет ‘MSDN Library for Visual Studio 2008’: http://www.microsoft.com/downloads/details.aspx?familyid=6FF3BC60-32C8-4C22-8591-A20BF8DFF1A2&displaylang=en Если нет 2.0 Гб внешнего трафика - добро пожаловать в MSDN Online: http://msdn2.microsoft.com/en-us/library/default.aspx Тебя интересуют разделы “Getting Started with Visual C#”, “C# Programming Guide”, “Writing Applications with Visual C#” и “C# Reference”. Read On →