For normal use the logic type is mapped to System.Boolean.
Inside VOSTRUCT and UNION, the XSharp.__WinBool is used, because this is a 4 byte value just like the Win32 api expects.
The LOGIC keyword represents the .Net Boolean type. This type can have either of two values: true, or false.
If you have members of type LOGIC in VOSTRUCT or UNION types, these will not be represented with .Net Boolean types. This is because a .Net Boolean occupies 1 byte, whereas in the Windows API, LOGIC values are represented using 4 bytes. Therefore, the compiler replaces them with a special type, __WinBool, which occupies 4 bytes and includes implicit converters between Logic and __WinBool.