installing and uninstalling an OEM SDBUS driver

An HP laptop comes with a JMicron SD Host Controller that does not support my SDIO-based device. Per instructions from JMicron, we “force” the SDA standard Complient SD Host Controller over the JMicron:

WCHAR inf[MAX_PATH] = L"C:\Windows\inf\sdbus.inf";
DiInstallDriver( NULL, inf, DIIRFLAG_FORCE_INF, &NeedReboot )
Then we install the device driver for the SDIO device.

On an uninstall, returning the computer to its original state, we locate the standard SDBUS driver by its GUID
DEFINE_GUID( GUID_DEVCLASS_SDHOST, 0xa0a588a4L, 0xc46f, 0x4b37, 0xb7, 0xea, 0xc8, 0x2f, 0xe8, 0x98, 0x70, 0xc6 );
Using SetupDiGetClassDevs() and SetupDiEnumDeviceInfo() and then uninstall it using DiUninstallDevice().

The code is written such that JMicron is not hardcoded and any other OEM manufacturer’s driver is removed in favor of the standard SD Host controller.
I found that I had to put a CM_Reenumerate_DevNode() at the end of the uninstall sequence in order to be able to uninstall and install right away . With CM_Reenumerate_DevNode(), I observe the JMicron driver come back, and then the install works, taking out the JMicron and installing the Standard SD Host Controller. My device is then powered and my driver is installed.
Without it, the install seems to succeed (no extra errors in setup.dev.log), but my SDIO device is not powered, which is what it does with the JMicron drivers. Sure enough , upon a reboot, JMicron driver is back.

Can someone please help explain what CM_Reenumerate_DevNode() accomplishes here? Is there a better way?

Thank you!
Rachel