»Шпаргалка Windows API» в новом формате

Я решил изменить формат распространения своего проекта «Шпаргалка Windows API». Как вы знаете один из томов (объекты user и gdi) распространялся на платной основе. Я решил сделать его открытым. Теперь все тома данного проекта распространяются абсолютно бесплатно.
Поскольку тома с течением времени будут меняться, для них вводится система версий. Версия каждого тома обозначается датой его последнего изменения. Она указывается на титульном листе тома чуть ниже обложки. Это некрасивое решение, но ничего лучше я пока не придумал. О выходе новых версий будет сообщаться в блоге.
Я не могу обещать, что новые версии будут выходить часто. Но и совсем забрасывать его я не буду.
Так что следите за новостями блога.

О важности префикса «\\\\?\\\\»

В одном из своих прошлых постов я писал о получении списка доступных COM портов на основе информации в реестре. Порты там представлены в виде строк «COM1», «COM2» и т.д. В принципе ничто не мешает передавать их в таком виде в функцию CreateFile для открытия. Однако для большей надежности я советую добавлять к ним префикс «\\\\?\\\\». Зачем? Читать полностью →

Функции printf, wprintf и _tprintf

В языке C/C++ существует два типа символов: обычный char и широкий wchar_t. Для каждого из них предусмотрена своя версия функции форматированного вывода. Для char это printf, а для wchar_twprintf. Но со временем понадобился третий вариант этой функции. Читать полностью →

Получение списка доступных COM портов

При программировании COM портов полезно иметь возможность получать список доступных портов на компьютере. Эта задача встречается настолько часто, что я решил затронуть ее в своем блоге. Читать полностью →

Ошибка 0xC000007B и смешение кода

Сравнительно недавно я работал над одной небольшой программой. Она была предельно простой (проверяла работу функции в подгружаемой библиотеке). Программа нормально компилировалась (даже без предупреждений), но при ее запуске выдавалось сообщение об ошибке 0xC000007B. Читать полностью →

Delphi неправильно передает пустые строки в технологии COM

Работая над одной программой, я заметил ошибку. Первоначально я решил, что это ошибка сервера, но, переписав пример на другой язык программирования, я понял, что сервер тут ни при чем. Читать полностью →

Полемика о времени жизни объекта

В своей предыдущей статье я представил алгоритм использования функции PulseEvent в качестве спускового крючка. Такой подход предполагает, что исполнительный поток создается во время старта программы и уничтожается только тогда, когда основная программа завершает свою работу. С таким подходом могут не все согласиться. Читать полностью →

Функция PulseEvent в роли спускового крючка

Функция PulseEvent предназначена для кратковременного перевода объекта событие в свободное состояние с его последующим возвратом в занятое состояние. Обычно в литературе по Windows API ей уделяется мало внимания. Тем не менее, её можно использовать в качестве спускового крючка при управлении потоком. О том, как это сделать, я сегодня и расскажу. Читать полностью →