Статьи с тегом «C++»
Статьи с тегом «C++» (19 шт.), от новых к старым.
-
Time Travel Debugging — записывать и перематывать ошибки, которые не воспроизводятся в долгоживущих приложениях
Ошибка раз в месяц оставляет в дампе только результат. Записывайте и перематывайте исполнение через WinDbg Time Travel Debugging (TTD): TTD.exe, кольцевые бу...
-
Почему ломаются аргументы ── правила аргументов командной строки Windows
В Windows массива аргументов нет: в CreateProcess уходит одна строка, делит её принимающая сторона. Правила деления CommandLineToArgvW, CRT и .NET, ArgumentL...
-
Что остаётся после падения родителя ── дерево дочерних процессов в Job Object
Почему после принудительного завершения UI остаётся помощник SDK и держит камеру или COM-порт. Как Job Object делает дерево процессов одной единицей и как сп...
-
Пул потоков Win32 — параллелизм через CreateThreadpoolWork без своих потоков
Не плодите ли вы CreateThread по всему нативному коду? Разбираем API пула потоков Win32, переработанный в Vista: четыре объекта work, timer, wait и io, групп...
-
Именованные каналы на практике — от проектирования до безопасности IPC в Windows
Практический разбор именованных каналов — стандартного IPC в Windows. По первоисточникам: выбор байтового режима и режима сообщений, сервер на несколько клие...
-
DllMain и блокировка загрузчика — почему говорят «в инициализации DLL ничего не делайте»
Почему из DllMain нельзя вызывать LoadLibrary и синхронизироваться с потоками. По первоисточникам: как блокировка загрузчика сериализует все уведомления DLL,...
-
Ложное пробуждение: почему wait на условной переменной возвращается без уведомления и как ждать в Windows
wait на условной переменной может вернуться и без уведомления (ложное пробуждение). Почему спецификация это допускает и как правильно ждать через while и пре...
-
Практические приёмы многопоточности в C++: как RAII и jthread убирают аварии из конструкции
В C++ гонка данных — это неопределённое поведение. Разбираем ловушку деструктора std::thread, остановку через jthread и stop_token, предотвращение взаимных б...
-
Обратная совместимость интерфейсов DLL и COM — таблица: какие изменения ломают вызывающий код
Какие изменения DLL или COM-компонента ломают вызывающий код. Разбираем три слоя совместимости — бинарную, исходного кода и поведенческую, — таблицу решений ...
-
Что такое MFC в Windows: основы для сопровождения существующих приложений
Разбираем обзор Microsoft Foundation Classes (MFC): связь с Win32, структуру приложения, карты сообщений, архитектуру Document/View, DDX/DDV и нюансы, важные...
-
Чек-лист безопасной работы с дочерними процессами в Windows-приложении
Чтобы безопасно работать с дочерними процессами в Windows-приложении, важнее не API запуска, а владение деревом процессов и процедура завершения. Разбираем J...
-
Распространение Windows-приложения одним файлом — single binary и пределы зависимости от ОС
Когда хочется свести Windows-приложение к одному EXE, важно различать «сделать один файл поставки» и «убрать зависимость от ОС». Разбираем это на примере .NE...
-
Разделяемая память: подводные камни и практические рекомендации
Подводные камни разделяемой памяти на практике и проектирование, которое снижает частоту сбоев: синхронизация, видимость, время жизни, ABI и права доступа.
-
Как честно сравнивать скорость C#, C++, Java и Go
Как честно сравнивать скорость C#, C++, Java и Go: проектирование измерений, прогрев, фиксация окружения, чтение статистики и конкретные сценарии бенчмарков.
-
Как наложить изображение и текст на кадры MP4 в Media Foundation
Разбираем, как в Media Foundation прожечь изображение и текст в каждый кадр MP4 и собрать новый файл: роли Source Reader, отрисовки, преобразования цвета и S...
-
Как преобразовать YUV в RGB с помощью Media Foundation
Как в Media Foundation преобразовать кадр YUV в RGB: автоматическое преобразование Source Reader, самостоятельное преобразование NV12/YUY2, stride и цветовое...
-
Как извлечь кадр из MP4 по заданному времени с помощью Media Foundation
Как Source Reader берёт из MP4 кадр, ближайший к заданному времени, выравнивает stride и alpha в RGB32 и сохраняет результат в PNG.
-
Как вызвать Native AOT DLL на C# из C/C++
Как опубликовать библиотеку классов C# как нативную DLL через Native AOT и вызывать точки входа UnmanagedCallersOnly из C/C++: когда схема уместна, какие пат...
-
Введение в Media Foundation: как понять API через COM
Разбираем, что такое Media Foundation, вместе с базовой терминологией Windows-медиа-API — COM, HRESULT, IMFSourceReader, MFT — в том порядке, в котором стоит...