Tag Archives: Windows API

HOWTO detect WIN11 using Windows API

The main problem here is that Windows 11 is a Windows 10++, and there is no function like IsWindows10OrGreater(). This forced us to write down our own IsWindows11OrGreater(). I want to write a function similar to the existing IsWindows*() using VerifyVersionInfo(). Here is the working body of such a function: BOOL IsWindows11OrGreater() { OSVERSIONINFOEX vi; ULONGLONG conditions; memset (&vi, 0, sizeof(vi)); vi.dwOSVersionInfoSize = sizeof(vi); vi.dwMajorVersion … Continue reading HOWTO detect WIN11 using Windows API »

HOWTO use NASM function for Windows 64-bits

Writing 64-bits assembler functions for Windows is quite different from the ones written for Linux or even for Windows 32 bits. Even when using NASM for a simplified approach, you shall care about a few details. First steps The first step is to add the following lines at the very beginning of the .asm file: 64 bits default rel We need the ‘default rel’ to … Continue reading HOWTO use NASM function for Windows 64-bits »

A custom EVENT object for lighting fast thread synchronization

Several weeks ago, while I was working on the next version of Horodruin, I was optimizing the multithreaded file copy engine. This optimization phase pops up an unexpected event on the standard event object processing.  It seems that frequent uses of SetEvent() API are not exactly processing-resources free. This is probably caused by some code overhead needed for a system object… During these evaluations, I … Continue reading A custom EVENT object for lighting fast thread synchronization »

HOWTO Make Windows SlimRW Lock More Confortable

Recently I tripped into SlimRW Lock API. It’s a Windows synchronization object very similar to the critical section, with the support of two different types of lock: shared and exclusive. Essentially you should get the shared lock for all read-only activities, while the exclusive lock shall be used for all the other cases. The Basic Implementation I wrote this simple class to include them in … Continue reading HOWTO Make Windows SlimRW Lock More Confortable »

HOWTO Automatically Catch Problems While Debugging

Suppose to have the ability to add dozens of breakpoints into your program main error detection points, whenever you start a debugging session. This should allow you to easily track down some hidden/unnoticed problems. For example, suppose to have a C function like the below one: __MYOBJECTDATA * WINAPI MYOBJGetPtr (HANDLE hMyObject) { __MYOBJECTDATA *pObj; pObj = (__MYOBJECTDATA *) hMyObject; __try { if ((pObj != … Continue reading HOWTO Automatically Catch Problems While Debugging »