Just recently, I had been looking into how Windows and operating systems in general work because I don't have any other current projects, and I figured that maybe I could learn to program my own tools, as I have come to realize how important that would be.
I think that from a low level, programs interact with the operating system by having the cpu put values in certain processor registers (with one value defining what operation needs to take place) and then perform an instruction called "syscall", that I guess is just like a special jump to wherever the code for the operating system resides or something...
What's puzzling to me though, is that at least according to this reference (http://j00ru.vexillium.org/syscalls/nt/64/) the value associated with every other operating system function appears to change with each new iteration of Windows. Windows does have a compatibility mode for programs for each operating system, but I've only ever had to use it once for a Windows 98 program.
Something notable I found out too, is that Windows 95 through ME were I guess just GUIs for DOS, while 2000 and upwards are not. I'd have thought this would have made most every program developed for ME and earlier incompatible with 2000 and later, although maybe this was the case.
I think that from a low level, programs interact with the operating system by having the cpu put values in certain processor registers (with one value defining what operation needs to take place) and then perform an instruction called "syscall", that I guess is just like a special jump to wherever the code for the operating system resides or something...
What's puzzling to me though, is that at least according to this reference (http://j00ru.vexillium.org/syscalls/nt/64/) the value associated with every other operating system function appears to change with each new iteration of Windows. Windows does have a compatibility mode for programs for each operating system, but I've only ever had to use it once for a Windows 98 program.
Something notable I found out too, is that Windows 95 through ME were I guess just GUIs for DOS, while 2000 and upwards are not. I'd have thought this would have made most every program developed for ME and earlier incompatible with 2000 and later, although maybe this was the case.