I am unable to access my board in 64 bit Windows 7. I compiled the driver as 64 bit and successfully installed it(or so it seems). Now my first call to SetupDiEnumDeviceInterfaces(…) fails. GetLastError() reports 0x103(ERROR_NO_MORE_ITEMS). The same code works fine on 32 bit XP. I’ve tried compiling the code using the Win32 and x64 compile option using Visual Studio 2010. Both versions report the same error.
Any ideas? Is there anything I can check that might reveal more useful information?
xxxxx@yahoo.com wrote:
I am unable to access my board in 64 bit Windows 7. I compiled the driver as 64 bit and successfully installed it(or so it seems). Now my first call to SetupDiEnumDeviceInterfaces(…) fails. GetLastError() reports 0x103(ERROR_NO_MORE_ITEMS). The same code works fine on 32 bit XP. I’ve tried compiling the code using the Win32 and x64 compile option using Visual Studio 2010. Both versions report the same error.
Any ideas? Is there anything I can check that might reveal more useful information?
Do you see evidence in the debug logs that your driver is actually
running, and is registering its device interface? Did you sign your
driver for KMCS?
Your application should work either as a 32-bit app or a 64-bit app. A
few of the SetupDi APIs only work in 64-bit, but it’s really only the
ones that create new devices.
–
Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.
I have not run the debugger to make sure the driver is running as expected. I made the assumption because the Device Manager reports it is working properly. I figured it would have reported an error. I will work on connecting the debugger to verify.
I am running in Test Mode because our signature expired. I don’t know when I will be able to sign it again. Running in test mode shouldn’t cause any undesired effects, correct?
Do I need to be calling any different functions in 64 bit mode? Last time I attempted using 64 bit binaries my driver/application used a symbolic link and it seemed to work. I could access the driver correctly. Since then I’ve updated to using the device interface method to access the driver. Since the change it has worked on 32 bit but this is my first attempt using 64 bit Win7. I wasn’t sure if any special changes need to be made in a 64 bit environment besides recompiling the binaries to target 64 bit.
xxxxx@yahoo.com wrote:
I am running in Test Mode because our signature expired. I don’t know when I will be able to sign it again. Running in test mode shouldn’t cause any undesired effects, correct?
No, if there were signature problems, you’d see a yellow bang in Device
Manager.
Do I need to be calling any different functions in 64 bit mode? Last time I attempted using 64 bit binaries my driver/application used a symbolic link and it seemed to work. I could access the driver correctly. Since then I’ve updated to using the device interface method to access the driver. Since the change it has worked on 32 bit but this is my first attempt using 64 bit Win7. I wasn’t sure if any special changes need to be made in a 64 bit environment besides recompiling the binaries to target 64 bit.
There shouldn’t be any difference.
–
Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.
It appears to be a Windows 7 issue rather than a 64 bit issue. The driver trace statements appear to be correct. I tried to repeat the test in a 32 bit Windows 7 system and I see the same results. I just can’t seem to access the board. It’s almost as if the app is running without administrator privileges but I am right clicking and selecting to run as administrator. Is there some reason I would not have admin privileges still?