Функция DeviceIoControlEx

Win32 API предоставляет «Ex» варианты функций ReadFile и WriteFile, в то время как «Ex» варианта функции DeviceIoControl не предлагается. Исправить этот недостаток очень просто, так как соответствующая функция Native API документирована в MSDN: NtDeviceIoControlFile (хотя и помечена как «Deprecated»). Прототип новой функции будет выглядеть вот так:

Read On →

Неогороженное минное поле – это еще не повод по нему ходить

Пришло письмо с вопросом:

Обнаружилась следующая проблема:

Наша программа сохраняет и считывает последнюю открытую ею директорию в разделе реестра, где сохраняют последние посещенные ими директории и другие программы, а именно в ветке «HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\LastVisitedPidlMRU». Это в 32-х разрядной версии. Но оказывается, что в 64-х разрядной версии данной ветки реестра в узле HKCU не существует, а она находится в «HKEY_USERS<некий идентификатор пользователя>\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\LastVisitedPidlMRU».

Так вот вопрос: как мне программно доступиться к этой ветке, если идентификатор пользователя неизвестен? Или, может, есть способ узнать этот идентификатор каким-то образом? А может где-то есть в реестре зеркало этой ветки, к которой можно получить доступ более простым способом?

Read On →

Начните с изучения технологии "X"

Очень хочется послать в …, ну скажем, отпуск любителей евангилировать свою любимую технологию без особого повода. Особенно раздражает когда человек говорит что-то, что можно отнести к предмету разговора только с натяжкой, но при этом формулирует свою мысль в стиле: «почитайте-ка учебник по X», «об этом еще в таком-то лохматом году писали». Послать его сразу язык не поворачивается – может он дело говорит, просто сформулировать не может (ну или, как вариант, доснести до нас тупых всю глубину мысли). Read On →

OSPF: оптимизм

Протокол Open Shortest Path First (OSPF) позволяет IP-маршрутизаторам автоматически определять топологию сети и генерировать оптимальные таблицы маршрутизации. Публикуемые элементы топологии снабжаются меткой возраста и порядковым номером. Тем самым даже «застрявшие» записи будут выброшены из базы со временем. Метка возраста – 16-и битное число, интерпретируется как время в секундах с момента публикации элемента. Максимальное значение метки может быть ограничено константой MaxAge, практическое минимальное значение которой составляет порядка минут. Когда возраст записи достигает MaxAge, опубликованный элемент обновляется увеличением порядкового номера на единицу. Read On →

Список состояний конечного автомата

Подсмотрел у коллеги простой и довольно удобный способ держать список состояний/событий конечного автомата в одном месте. А то обычно они норовят расползтись по разным углам: enum, объявляющий соответствующие константы, массив имен состояний для отладки, большой switch, выбирающий что делать, в зависимости от состояния…

Read On →

DV 2012: Epic fail

А ведь еще сто лет назад говорили умные люди, что написать хороший генератор случайных чисел не такая простая задача, как кажется. :-) Хуже всего конечно тем, кто на радостях успел наделать непоправимых глупостей: напиться в драбадан, показать палец шефу, забить на зависший EBGC процесс в самый критический момент, продать квартиру… Ну а всем остальным приятно, что удастся сыграть два раза за один год. IMPORTANT NOTICE REGARDING THE 2012 DIVERSITY LOTTERY PROGRAM We regret to inform you that, due to a computer programming problem, the results of the 2012 Diversity Lottery that were previously posted on this website have been voided. Read On →

Вы, конечно, будете смеяться, …

… но я понятия не имел, что вложенные структуры в C/C++ можно инициализировать плоским списком значений. Есть, например, вот такая структура: struct foo { int value; }; struct bar { int value; }; struct foobar { foo value1; bar value2; int value3; }; Её можно инициализировать вот так: foobar data = { { 1 }, { 2 }, 3 }; А можно и так: foobar data = { 1, 2, 3 }; Компилятор съест оба варианта кода и не поморщится. Read On →

Впечатления от поездки и конференции

Впечатления от поездки.

Пыльно, грязновато. Дороги и тротуары по обыкновению разбиты, однако заметно, что если выровнять тротуары и бордюры, разбить газоны, починить заборы, поддерживать это все в чистоте (и не делать более ничего другого), то запросто получается почти западная Европа.

Read On →

РИТ++ 2011: Сетевая подсистема Windows глазами разработчика

Слайды моего доклада на РИТ++ 2011: Сетевая подсистема Windows глазами разработчика. Спасибо за внимание. ;-) MD5: 9d095bbc517f564758ec98ca779fadd4 SHA1: 46bebb8991f5b977ffcf978f277eb82b3cc08140 PDF версия: Сетевая подсистема Windows глазами разработчика. MD5: 74676d09b0fdf5fc87182eb814b9d997 SHA1: 8bd1aa1f3db39ac5fab1ede4bbb4b43a9a91e11e

Crater Lake

Вид на Crater Lake с высоты 10 километров: Случайно обратил внимание, когда возвращался из Калифорнии месяц назад. Снимал, понятное дело, телефоном. Качество - сами понимаете.