4 ms·
Windows doesn't provide consistency between versions at the interrupt level, and Wine doesn't provide any interface at that level. It's basically a COFF loader,
by koenigdavidmj 11y ago
Windows doesn't provide consistency between versions at the interrupt level, and Wine doesn't provide any interface at that level. It's basically a COFF loader, and a bunch of regular userspace functions in DLLs that do everything.
Linux, on the other hand, provides exactly that, and this wrapper makes it so that you can actually run "movl $1, %eax; movl $0, %ebx; int $0x80" and it will actually call the equivalent of exit(0).
- ultramancool 11y agoYes Windows does provide such a thing: http://j00ru.vexillium.org/ntapi/ http://j00ru.vexillium.org/ntapi/ Would be very interesting to see a Wine based on this concept instead...
- koenigdavidmj 11y agoOf course it does at some point, but they're not meant to be used by the public, which is why: * you're linking to a URL with leetspeak in it, and not MSDN. * the codes change so frequently. * some of them disappear or are renumbered, even in service packs. If we wanted to do this for Wine, then it would also require emulation or something like OS X's Hypervisor.framework to catch system calls, which seems heavyhanded when we have working code already.
- ultramancool 11y ago> If we wanted to do this for Wine, then it would also require emulation or something like OS X's Hypervisor.framework to catch system calls, which seems heavyhanded when we have working code already. It could also be done as a kernel level loadable module in the sort of style this Linux subsystem is being done, which is more what I was thinking. Changing a few numbers for every Windows service pack (really, not even necessary if you only support certain versions of ntdll for example) might not be so bad compare to re-implementing bug level compatibility with every Windows API. Calling Wine "working" in its current state is a bit of an overstatement.