hi, i tried to run some of my programs on win nt. the programs use gdi functions and fpu. i looked up in the api-reference that all my gdi functions are supported on nt, but what's the problem then? why doesnt my program run? is it because of FPU instructions? if you want to try yourself, please download "balls.zip" or "flinstra.zip" from my website: www.fly.to/safcon tnx for your help! cya
NT is WAY more strict about your programming style than other versions of windows. It's these strict standards that make NT so stable. For example you absolutely MUST preserve ebx, esi and edi registers under NT. If you alter one of them and don't put it back, your program won't run. Also when access any hardware (Including the file system) you must implement security function properly, or it will only run while the administrator is logged in. Also you must make sure that you don't push more data than you pop. Most of these things you can get away with under win9x and your program will run and compile fine, however on NT or Win2k it won't function. Hope this helps a little, Ben
A lot of the Win9x GDI is in 16-bit code. When the system switches from 32-bit to 16-bit code, the 32-bit registers are automatically preserved. If the 32-bit API function simply delegates all of its function to 16-bit code, all your registers are preserved automatically. That's how your program escaped problems on Win9x. In NT, the GDI remains in 32-bit code, which makes certain assumptions about which registers it can clobber, and which ones it must preserve. Ignore these assumptions (conventions) at your peril.