6 ms·
Every new API since around NT5.2/6.0 era had to get explicit waiver to be provided as anything other than COM interface. Some additionally have weird hybridizat
by p_l 2mo ago
Every new API since around NT5.2/6.0 era had to get explicit waiver to be provided as anything other than COM interface. Some additionally have weird hybridization going on IIRC that lets you have some kind of faster path but still has COM exposed (IIRC that's only DirectX?)
That is for new APIs, not extensions of existing APIs.
IIRC, most non-COM methods you'll see for those are wrappers around COM calls. Back when WinRT was promoted as the next big thing, once you got outside of the small circle of WinRT propaganda there was explicit acknowledgement that all of the APIs are actually COM based enabling continued development of non-.NET compilers.
Of course underneath it all, especially once you get to userland-kernespace interactions you go back to combinations of IOCTL, memory mapped IO, some basic object calls and undocumented fun of OpenVMS-derived IPC, but a considerable chunk of that is not exposed or documented for non-blessed programmers.
- rramadass 2mo agoRight; the links i provided above explain it in more detail. WinRT is made up of component dlls and therefore exposes functional interface bundles. But the implementation of these components mostly took the path WinRT -> Win32 api -> ntdll (aka "Windows Native api" which is undocumented). But since MS wanted to push WinRT they allowed some paths to be WinRT -> ntdll. AFAIK this is what the mandate/waiver was for. So you have the current situation that some Win32 apis have no analogues in WinRT and vice-versa. The DirectX path uses "Nano-COM" (a stripped down version of COM) which calls into user-mode runtime dlls which then takes another path to the kernel. Lets not even get into how .NET projections/interfaces/wrappers do their job ;-) The key point to know is that COM is only a packaging architecture/framework/middleware for structuring at a user-mode binary level. It is all quite elaborate and complicated and so making a one-line statement like "everything is COM" is sheer cluelessness.