Blog
Practical articles from KomuraSoft LLC about website development, SEO, Google Ads, Windows development, legacy asset reuse, and bug investigation.
-
How to Correctly Compare the Speed of Different Program Versions on Windows
A reproducible procedure for comparing program versions on Windows, covering power mode, power plan, thermals, background noise, measurement metrics, and ETW...
-
How to Concretely Isolate "Only the Operations That Need Administrator Privileges" in a Windows App
A concrete walkthrough of keeping a Windows app UI at asInvoker while isolating only the administrator-privileged operations into a helper EXE, covering UAC,...
-
Storing Secrets in Windows Apps - Avoiding Plaintext Configuration with DPAPI
To avoid storing connection credentials and API tokens in plaintext configuration files in Windows apps, we walk through DPAPI / ProtectedData, the differenc...
-
Pre-Migration Checklist for Moving from .NET Framework to .NET
A practical checklist of what to verify before migrating from .NET Framework to .NET: project types, unsupported technologies, NuGet dependencies, SDK-style ...
-
How to Convert YUV to RGB with Media Foundation
Two ways to get RGB from YUV in Media Foundation: let the Source Reader output RGB32, or convert NV12/YUY2 yourself with stride and color matrix handled.
-
A Guide to Windows NIC Advanced Settings - RSS/LSO/EEE/Wake on LAN
A practical guide to Windows NIC advanced settings. What actually changes when you adjust Jumbo Packet, Speed & Duplex, RSS, RSC, LSO, Flow Control, EEE, Wak...
-
Extracting a Still Image from an MP4 at a Specific Time with Media Foundation
How to grab the frame closest to a given time in an MP4 with the Source Reader, fix up stride and the RGB32 alpha byte, and save it as a PNG.
-
A Minimum Security Checklist for Windows App Development
A checklist-style guide to the security basics for WPF / WinForms / WinUI / C++ / C# business apps: privileges, signing, updates, secrets, HTTPS, input valid...
-
What Is the .NET Generic Host? - The Foundation for DI, Configuration, and Logging
What the Generic Host does, seen through its relationship to DI, configuration, logging, IHostedService, and BackgroundService - and where it pays off versus...
-
What Is .NET Native AOT? - How It Differs from JIT and Trimming
What Native AOT is, sorted out against JIT, ReadyToRun, self-contained, single-file, trimming, and source generators, plus the cases it fits and the cases wh...
-
What Are COM / ActiveX / OCX? - The Differences and Relationships Explained
A practical guide to what COM is, what ActiveX is, and what OCX is - covering their differences and relationships, the connection to OLE, where they are used...
-
Choosing Between .NET's Three Timers - PeriodicTimer/Timer/DispatcherTimer
Which .NET timer should you use? PeriodicTimer for async loops, Timer for ThreadPool callbacks, DispatcherTimer for WPF UI, plus a decision table and code.
-
Calling a C# Native AOT DLL from C/C++
Publish a C# class library as a native DLL with Native AOT and call its UnmanagedCallersOnly entry points from C/C++ - where the setup fits, the implementati...
-
Why Use the .NET Generic Host and BackgroundService in Desktop Apps
How to use the Generic Host and BackgroundService to organize startup, periodic processing, shutdown, logging, configuration, and DI in Windows tools and res...
-
How to Handle ActiveX / OCX Today - A Keep / Wrap / Replace Decision Table
When you find ActiveX / OCX, how to choose between keeping, wrapping, and replacing it, covering 32-bit / 64-bit, registration, browser dependencies, and ven...
-
WPF/WinForms async and the UI Thread on One Sheet
After await in WPF or WinForms, which thread runs your code? Covers Dispatcher.Invoke, ConfigureAwait(false), and why .Result and .Wait() deadlock.
-
Building a Windows Failure-Path Test Foundation with Application Verifier
What Application Verifier is, organized together with how to build a Windows failure-path test foundation using Handles, Heaps, Low Resource Simulation, and ...
-
Investigating Long-Run Crashes of an Industrial Camera App - The Handle Leak (Part 1)
How to look at a Windows app that suddenly crashes after long-running operation, using a case study of an industrial camera control app, from the perspective...
-
Why TCP Retransmissions Stall Industrial Camera Communication, and How to Isolate Them
How to isolate the cause when industrial camera communication stalls for several seconds due to TCP retransmissions, covering packet loss, RTO, RFC1323 times...
-
A Practical Guide to FileSystemWatcher - Handling Missed and Duplicate Events
We organize how to use FileSystemWatcher and its pitfalls - missed events, duplicate notifications, completion-detection traps, rescans, atomic claims, and i...
-
An Introduction to Media Foundation - Understanding the API Through a COM Lens
We explain what Media Foundation is, together with the basic vocabulary of Windows media APIs - COM, HRESULT, IMFSourceReader, MFTs - in the order you should...
-
A Practical Decision Table for C# async/await - Task.Run and ConfigureAwait
C# async/await best practices, organized with a decision table that covers I/O waits, CPU work, Task.Run, ConfigureAwait(false), and fire-and-forget.
-
A Practical Guide to Getting as Close to Soft Real-Time as Possible on Ordinary Windows
How to stabilize periodic and low-latency processing on ordinary Windows, covering timer resolution, thread priorities, power settings, and how to monitor th...
-
Mutual Exclusion Fundamentals for File-Based Integration - Best Practices for File Locks and Atomic Claims
We organize mutual exclusion for file-based integration around file locks, atomic claims, temp -> rename, and idempotency, and lay out designs that keep shar...
-
Calling Native DLLs from C#: C++/CLI Wrapper vs P/Invoke
When using a native DLL from C#, this article separates the cases where P/Invoke is enough from the cases where a C++/CLI wrapper pays off, looking at owners...
-
An Introduction to HCP Charts and MakingHCPChartSkill
We explain what HCP charts are and walk through how MakingHCPChartSkill converts HCP-DSL into deterministic SVG, how to read the output, and how to use it.
-
COM STA/MTA Fundamentals - Threading Models and How to Avoid Hangs
COM STA/MTA fundamentals, covering the apartment model, UI threads, message loops, marshaling, and how to think about avoiding hangs.
-
A Worked Example of a COM Bridge for Calling a 64-bit DLL from a 32-bit App
When a 32-bit app cannot call a 64-bit DLL directly, a COM bridge can connect them. We walk through the approach, including the Windows constraints, the arch...
-
What Is COM? - Why the Design of Windows COM Is Still Beautiful Today
We explain what COM is from the perspective of Windows COM interface design, IUnknown, GUIDs, and binary compatibility, and why it still holds up today.
-
Announcing Our Technical Blog - A Windows / C# / COM Development Blog
Announcing the launch of the KomuraSoft LLC technical blog. We will be sharing insights on Windows development, C# / .NET, COM, design, and development tools.