Actually, a Win32 process can call NT system calls
directly. It's just not
encouraged :-)
I stand corrected.
Has this always been true?
I once asked MS tech support, and was told that NT system calls couldn't
be made from a Win32 application, because the Win32 subsystem would trap
them and not pass them to the kernel.
Third parties have figured out how to write native NT programs (which are
effectively peers to the subsystems). However, in the general case there's
not much reason to do so. Although it might be fun to write a replacement
for the POSIX subsystem that was actually sufficiently full-featured to
be useful (vs. the current implementation which was deliberately made to
be minimally conformant for the sole purpose of making NT POSIX-compliant
for government procurement purposes).