0X800F023E

SPAPI_E_DI_FUNCTION_OBSOLETE 0X800F023E: Fix Stuck Driver Installs

Old or mismatched drivers can trigger this obsolete install error. Here's how to clear it and get the device recognized by Windows.

You're trying to install a driver for an older piece of hardware—maybe a USB-to-serial adapter, a legacy printer, or a PCI card from 2010—and Windows throws up SPAPI_E_DI_FUNCTION_OBSOLETE (0X800F023E). The install wizard runs for a few seconds, then says it couldn't find the device or the operation isn't supported. This usually pops up when you're running an installer written for Windows XP or Vista on Windows 10/11, or when the INF file references a function that's been deprecated. I saw this last month with an old Zebra label printer; the vendor's setup.exe just wouldn't play nice with modern Windows.

What's actually going on

Windows device installation uses a set of APIs (the SetupAPI). Over the years, Microsoft marks certain operations as obsolete—deprecated but still present for compatibility. When a driver package calls one of those old functions, Windows returns SPAPI_E_DI_FUNCTION_OBSOLETE to say, "Hey, this installer is using a method I don't support anymore." It's not a hardware failure; it's a software mismatch. The driver might be perfectly fine, but the installer script is stuck in 2007.

The real fix isn't to make Windows accept the old function—that's a deep system hack. Instead, you bypass the broken installer and let Windows' built-in driver update handle the device directly. Nine times out of ten, that works because modern Windows still supports the actual INF files, just not the ancient install programs that wrapped them.

Fix: Install the driver manually

You're going to tell Windows to look at the driver files you've already downloaded and ignore the broken setup.exe. Here's the step-by-step.

  1. Extract the driver files. If the downloaded file is a .exe, run it but cancel the installer once it extracts files to a temp folder (usually C:\Program Files\VendorName or C:\Windows\Temp). Alternatively, use 7-Zip to extract the .exe directly—right-click and select "Extract here." You want the folder that contains .inf, .sys, and .cat files.
  2. Open Device Manager. Press Win + X and select Device Manager. Look for the device that's failing—it'll often be under "Other devices" with a yellow exclamation mark, or it might show as "Unknown device."
  3. Right-click the device and choose "Update driver."
  4. Select "Browse my computer for drivers". This is the keyword—don't let Windows search automatically.
  5. Click "Let me pick from a list of available drivers on my computer". Then click "Have Disk" and browse to the folder you extracted in step 1. Pick the .inf file that matches your device (if there's a choice, go for the one with "x64" or "Win10" in the name).
  6. Follow the prompts. Windows will install the driver and may ask to restart. If it warns about an unsigned driver, that's normal for older hardware—just click "Install anyway" if you trust the vendor.

That bypasses the obsolete function call entirely because you're using Windows' modern SetupAPI to process the INF directly, not the old installer.

If it still fails

Sometimes the manual route doesn't work, especially if the INF itself references functions that don't exist anymore. Here are three things I check when that happens:

  • Check if there's a 64-bit vs 32-bit mismatch. Old hardware often only has 32-bit drivers. On a 64-bit Windows, those won't install at all. You might need to run the device in a virtual machine with 32-bit Windows, or find a third-party signed driver (look on the vendor's site for "Windows 10 64-bit"—if it's not there, you're out of luck).
  • Use the manufacturer's dedicated tool. Some vendors (like Prolific for USB-serial chips) offer a driver cleaner tool that removes old versions, then you can try the manual install again. It's worth a shot if the above steps didn't pick up the device.
  • Check the INF with a text editor. Open the .inf and search for Include or Needs lines. If they reference files that don't exist on your system, that's your culprit. You might be able to delete those lines and save the INF as a custom version—but that's advanced, and you need to know what you're doing. If you're not comfortable, stop there and look for a different driver source.

That's the whole deal. Most times, the manual install trick gets the job done. If it doesn't, the hardware might simply be too old for the OS—and honestly, at that point it's worth asking if the device is worth the hassle. I've told more than one client to just buy a modern USB adapter for $15 instead of fighting a 2006-era driver.

Related Errors in Windows Errors
0X000032D9 IPSec Tunnel Filter Missing? Here's the Fix for 0x000032D9 Windows Resource Protection Could Not Perform the Requested Operation Stop 'Windows Resource Protection Could Not Perform the Requested Operation' 0X0000030A Fix ERROR_BADSTARTPOSITION (0x0000030A) on Windows 10/11 0XC00A002B Fix STATUS_CTX_WINSTATION_ACCESS_DENIED 0XC00A002B

Was this solution helpful?

EP
Erropedia Team
Tech Support Editors
The Erropedia editorial team researches and documents real-world tech errors from across Windows, Linux, macOS, networking, databases, cloud platforms, and more. Every solution is reviewed for accuracy and updated as software and systems evolve.