may be a little early to stash away that x64 vm..

I ran into a problem with
              ( ['out'], POINTER(POINTER(c_ubyte)), 'bytes' ),
methods the other day when implementing an event handler. It very much
seems like the pointer is not returned correctly.

The return value is set with
  ubyte_arg = (c_ubyte * length)()
  ubyte_p = cast(ubyte_arg, POINTER(c_ubyte))

for high-level i just return the ubyte_p, for low level i set
ppbArg[0] = ubyte_p

The process crashes on what seems to be a memory read error on Vista
x64.  -And of course it works flawlessly on 32 bit XP.


Anyway.. To give some good proof of bug I tried to implement
http://starship.python.net/crew/theller/comtypes/server.html
as a 64 bit server. The only change I did was
        HRESULT MyMethod([in] INT a, [out] BYTE ** bytes, [out,
retval] INT *presult);
(ie. have a parameter that resembles my previous troubles).

compiled the idl with "midl /env amd64 /amd64 /x64" (and other
variants). It works perfectly, BUT produces a 32 bit com server!
when testing with cscript and this js code
   "testobj = new ActiveXObject("TTTestTypeLib.MyObject")"
if fails with
c:\windows\system32\cscript (64bit)
but works with
c:\Windows\SysWOW64\cscript (32bit)


What did I miss?

-- 
Torbjørn Tyridal

------------------------------------------------------------------------------
Register Now for Creativity and Technology (CaT), June 3rd, NYC. CaT 
is a gathering of tech-side developers & brand creativity professionals. Meet
the minds behind Google Creative Lab, Visual Complexity, Processing, & 
iPhoneDevCamp as they present alongside digital heavyweights like Barbarian 
Group, R/GA, & Big Spaceship. http://p.sf.net/sfu/creativitycat-com 
_______________________________________________
comtypes-users mailing list
comtypes-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/comtypes-users

Reply via email to