Quick answer
You need a driver compiled for your exact CPU architecture — check if your system is x86, x64, or ARM64, then download the right version from the manufacturer's site. Windows won't let you install a 32-bit driver on 64-bit Windows or an ARM driver on x64.
What's actually happening here
The SPAPI_E_DRIVER_NONNATIVE error (0x800F0234) means Windows detected that the driver's binary is built for a different CPU instruction set than your OS. This isn't a permission problem or a corrupted file — it's a fundamental architecture mismatch. Windows doesn't try to run the driver anyway because that would either crash the system or silently break functionality.
I've seen this most often in three scenarios:
- You downloaded a driver from a generic site that mixed up x86 and x64 versions
- You're on a newer ARM-based Surface or Lenovo ThinkPad X13s and grabbed an x64 driver instead of ARM64
- You're installing an old printer or scanner driver that only shipped as 32-bit on a 64-bit OS
The kernel-mode driver model ties each driver to a specific platform at compile time. Windows's loader checks the PE header (the Portable Executable format) for the machine type field — if it says IMAGE_FILE_MACHINE_I386 (0x014C) but your system is IMAGE_FILE_MACHINE_AMD64 (0x8664), you get this exact error.
Fix steps
- Identify your OS architecture — open Command Prompt and run
wmic os get osarchitecture. You'll see "64-bit", "32-bit", or "ARM 64-bit". Write that down. - Find the driver's architecture — right-click the driver's .inf or .sys file, go to Properties > Details, and look for "File description" or "Machine type". If it says "x86" you need the 64-bit version. For ARM systems, only ARM64 drivers will work.
- Download the correct driver — go directly to the hardware manufacturer's support page. Don't use third-party driver updaters — they often serve the wrong architecture. Look for a dropdown that says "64-bit" or "ARM64". If none exists, the device likely isn't supported on your platform.
- Uninstall the wrong driver first — open Device Manager, find the device with the yellow exclamation, right-click > Uninstall device. Check "Delete the driver software for this device" if it's there.
- Install the correct driver — run the installer or use Device Manager's "Update driver" > "Browse my computer" and point it to the folder with the matching .inf file.
- Reboot — even if Windows says it's installed, a reboot finalizes the driver load.
Alternative fixes if the main one fails
Sometimes you can't get the right architecture driver because the hardware is ancient. Here's what else you can try:
- Check for a Windows Update driver — go to Settings > Windows Update > Advanced options > Optional updates. Microsoft sometimes hosts architecture-correct versions of common drivers. I've seen this fix Realtek card readers on ARM systems.
- Use compatibility mode on the installer — right-click the setup.exe > Properties > Compatibility > Run this program in compatibility mode for... This only helps if the installer itself is checking architecture incorrectly, which is rare for the actual driver binary.
- Try a different hardware revision — some PCIe devices have different firmware for x86 vs x64. A firmware flash might change the required driver. This is advanced and risky — only do this if you have the exact firmware from the manufacturer.
- Run the system in a VM — if you really need that old scanner, run a 32-bit Windows 10 VM inside your 64-bit host. The driver will work there because the virtual machine matches the architecture.
Prevention tip
Always download drivers from the manufacturer's official support page, not from generic driver repositories. Before downloading, check your system architecture and match it. On ARM devices, bookmark the manufacturer's ARM64 support page — most still hide it deep in their site tree. If you see "x64" or "64-bit" in the download name but you're on ARM, keep looking.
One more thing — after installing the right driver, check Device Manager for a "Driver is not intended for this platform" error on other devices. Sometimes driver packs bundle mismatched drivers for everything connected, and you'll need to repeat this fix for each one.