Win.ini could only offer things if the core was already exposed in config.sys and autoexec.bat; 32-bit drivers could not be loaded by Windows and it was pointless to load drivers for windows only as it was easier and more stable to targe DOS.
win3.11 didn't have it's own drivers besides netbeui and other windows crapola but it required a tcpip and network drivers to be loaded in DOS.
Win95 did also have win.ini but already had 16 bit driver support and a registry. However most things still had to be loaded in DOS. This didn't change for desktop systems until windows XP. So when it came out there was no driver support for anything.
The Linux kernel does have a relatively stable API for drivers, I wrote a USB driver for kernel 2.2 which still works for 2.6. Most drivers do not change, there are several in source that work and haven't changed in a decade. Even old nVidia drivers work with current kernels. If you want a binary driver, you may have to write your own shim but that's trivial if you're really bent on protecting your imaginary property.
Some things change but these days all of the common stuff is stable. Sometimes stuff had to be fixed to conform to standards, that happens in windows too although windows rather breaks the standard to support legacy and expects everyone to follow a broken design.