Coming from .NET, it's a bit confusing to see that LONG is anything but 64-bit. This is prolly due to the fact that 64bit existed when .NET was created and wasn't around when ULONG in C++ was defined. So somebody naturally decided to make them inconsistent! :(