The native NT API's don't actually change that much in breaking manner. Many ISVs, especially security software, rely on calling into the native API for stuff that isn't possible with Win32. Only recently has Microsoft gotten better at exposing much of that functionality. For instance if you had a handle to a thread and wanted to get the thread id, even though it's a very basic operation there was no way to do that before Windows Vista. Now there's GetThreadId.