Benutzung COM auf 64Bit: Attempted to read or write protected memo

07/05/2008 - 12:42 von Miro Tunk | Report spam
Ich entwickle eine Anwendung, die eine API eines Drittanbieters nutzt. Die
Schnittstelle ist COM.

Folgender Code:

using Interop.APPSERVICESLib; //API-Dll

(...)

Interop.APPSERVICESLib.EmpNodesServicesClass NodeServices = new
Interop.APPSERVICESLib.EmpNodesServicesClass();

System.Array arFieldNames = Array.CreateInstance(typeof(string), 2);
arFieldNames.SetValue("name",0);
arFieldNames.SetValue("lastName",1);

System.Array arAllUsers = NodesServices.GetAllUsers();

Array FieldInfos = NodeServices.GetFieldsEx(ref m_strVariable, ref
arAllUsers, ref arFieldNames);

Bei dem letzten Aufruf (GetFieldsEx) bekomme ich eine merkwürdige Exception:

System.AccessViolationException: Attempted to read or write protected
memory. This is often an indication that other memory is corrupt.
at
System.StubHelpers.MngdSafeArrayMarshaler.ConvertContentsToManaged(IntPtr
pMarshalState, Object& pManagedHome, IntPtr pNativeHome)
at
Interop.EMPAPPSERVICESLib.EmpNodesServicesClass.GetFieldsEx(EmpContext&
Context, Array& Nodes, Array& FieldNames)
at XXX

Diese Exception tritt aber NUR auf einem 64Bit Rechner auf. Auf einem 32Bit
Rechner funktioniert alles einwandfrei!

Ich habe nichts brauchbares zu dem Thema gefunden.
 

Lesen sie die antworten

#1 Herfried K. Wagner [MVP]
07/05/2008 - 15:40 | Warnen spam
"Miro Tunk" <Miro schrieb:
Ich entwickle eine Anwendung, die eine API eines Drittanbieters nutzt. Die
Schnittstelle ist COM.
[...]
Diese Exception tritt aber NUR auf einem 64Bit Rechner auf. Auf einem
32Bit
Rechner funktioniert alles einwandfrei!



COM = 32-Bit-Technologie. Hast Du das Assembly für x86 kompiliert?

M S Herfried K. Wagner
M V P <URL:http://dotnet.mvps.org/>
V B <URL:http://dotnet.mvps.org/dotnet/faqs/>

Ähnliche fragen