AnsweredAssumed Answered

DCOM IArrayTransfer Issue

Question asked by mr_matt on Jun 12, 2014
Latest reply on Jun 16, 2014 by mr_matt

I have an issue that looks remarkable similar to one that was solved several years ago in this thread: https://community.keysight.com/message/10097#comment-10097

There are some differences, however.  So let me spell out the whole situation:

I wrote some software, in National Instruments Labwindows CVI 9.1.1, to setup and collect data on a N5224A PNA.  Control was thru DCOM.  Data was offloaded using IArrayTransfergetComplex with dataStore being naMeasResult.  These transfers are triggered with a callback registered using INetworkAnalyzerEventRegOnOnChannelEvent.  The PNA is running Windows XP, the Host computer is running Windows XP too.  PNA proxy version is 9.40.06.00.

The software ran fine for what I was doing at the time.

Now a year or two later, I need to make some changes to the code.  The original development computer crashed in the meantime, so now I'm on a Windows 7 computer trying to continue development.

First problem was DCOM security issues, which I have since worked thru.  I highly recommend that anyone trying to implement DCOM in Windows7 read this (especially the first part about local security policies):  http://social.technet.microsoft.com/Forums/windowsserver/en-US/c9a733bf-e8f3-4f83-b309-9ca0114bda36/dcom-authentication-error-80070005 

Now I'm stuck on a problem with IArrayTransfergetComplex.
I can run DCOM commands on my Host computer and the PNA responds (so I can perform a setup on the PNA remotely).
I can register my callback, as before, to pull data off the PNA
The callback occurs when data is available (breakpoints show I'm getting into that section of code)
But when IArrayTransfergetComplex is called, I get the following error:

      FATAL RUN TIME ERROR:
      "AgilentPNA835x.c", line 266952, col 5, thread id 0x00001858.
      The program has caused a "General Protection" fault at 0x00000000.

Then Labwindows highlights code in the AgilentPNA835x.c file (inside the iArrayTransfergetComplex wrapper):
      __caErrChk (  __vtblIFacePRT->lpVtbl->getComplex (__vtblIFacePtr, dataStore, pNumValues, &pReal__Temp, &pImag__Temp));

Based on the old, similar post referenced at the beginning of this post, I checked to see how I was compiling the code (for 32-bit or 64-bit machines).  Labwindows give you the following choices:  Release, Debug, Release (x64), Debug (x64).  I am using 'Debug', so I assume that's x86.

Any ideas or experience on this issue?

Outcomes