It seems you are right; in fact I think the way this is implemented is bogus.
I tried to get the first adapter available:
Hoping it would always yield the GPU actually used. Doing it right in the beginning of the app worked out, but after DXUT initialization it was failing. I tracked down the problem and found this:
factory->EnumAdapters(0, &adapter); // Returns the adapter for the Intel card D3D10CreateDevice(...); // Seems to be the first one in the app, when DXUT creates dummy devices for testing compatibility factory->EnumAdapters(0, &adapter); // Returns the adapter for the NVIDIA card
So, doing it as I wrote in my first post (getting the adapter from the device) is not reliable, and trying to do in this other way (directly from first adapter ordinal) is also bogus. Unless this is done before device creation, you cannot rely on what you get from EnumAdapters.