SiGrabDevice returns SI_INTERNAL_ERROR

Post questions, comments and feedback to our 3Dconnexion Windows Development Team.

Moderator: Moderators

Post Reply
Posts: 2
Joined: Tue Aug 27, 2019 2:47 am

SiGrabDevice returns SI_INTERNAL_ERROR

Post by Kieutrang » Tue Aug 27, 2019 2:49 am

Hi support and developers,

I'm implementing the space mouse connection into a multi-executable application, where we do have trouble in regaining the space mouse focus as soon as it was lost once by clicking on e.g. Google Earth.(There'll be another posting to this topic in the next weeks, probably)
So I tried to catch the SpaceMouse/Navigator again by using SiGrabDevice. But no matter what I do, I always do get SI_INTERNAL_ERROR. I tested this on 4 machines in our R&D department, with two different devices. The internal error is all, I ever see.

Here are some numbers of versions:
I've installed 3DxSoftware64_v3-16-3_r1447 as driver package and 3DxWare-SDK_v3-0-2_r7538 from last june as the SDK.
Calling SiGetDriverInfo, SiGetLibraryInfo and SiGetDeviceInfo returns the following:
Driver: 6.17.8 - January 24, 2014
Library: - 9.5.0, September 6, 2001 - this is pretty old, but I don't know, whether this is the latest and greatest, or if this has to do with my issue anyway.
Device: HID Firmware 4.4, Type6, no Version information
I'm working on a Dell T7500 machine with Win7 64bit SP1.

So: What can I do to make this work? Using exclusive grab or not does not make any difference, btw.


Posts: 2804
Joined: Wed Dec 20, 2006 2:25 pm
Location: USA

Re: SiGrabDevice returns SI_INTERNAL_ERROR

Post by jwick » Tue Aug 27, 2019 7:49 am

Did you call SiOpen first?
I think you need that handle for SiGrabDevice.
If that's the case, I should return a better error message.

Generally SI_INTERNAL_ERROR should indicate a problem communicating with the driver. Something is messed up in the buffer.

Turn on logging (3Dx systray icon). The log file (3DxService.log) will tell you a lot about what is going on...or you can send it to me and it will tell me a lot about what is going on.

That does seem like a pretty old driver. Any reason why you can't update?

Posts: 24
Joined: Thu Jun 20, 2019 8:33 am

Re: SiGrabDevice returns SI_INTERNAL_ERROR

Post by notkevinhise » Fri Aug 30, 2019 4:26 pm

From looking at the 3DxTest32.cpp example, you must:

Call SiInitialize()

Use SiOpenWinInit() to initialize a SiOpenData structure instance, which is passed to SiOpen().

Then call SiOpen() and get back a valid non-NULL SiHdl value.

And finally call SiGrabDevice() with the handle and "true".

...if that helps any.

Post Reply