Retrieving BSTR * from a DLL
mzdude
jsanga at cox.net
Wed Jul 9 17:34:59 EDT 2008
I need to interface with a windows DLL that has the following
signature
extern "C" void Foo( BSTR in, BSTR *out )
Code so far
>>> from ctypes import *
>>> import comtypes
>>> LPBSTR = POINTER(comtypes.BSTR)
>>>
>>> hdl = windll.MyDll.Foo
>>> hdl.rettype = None
>>> hdl.argtypes = [comtypes.BSTR, LPBSTR]
>>>
>>> inStr = comtypes.BSTR(u'Some Silly String')
>>> out = comtypes.BSTR
>>>
>>> hdl(inStr,byref(out))
Traceback (most recent call last):
File "<pyshell#14>", line 1, in <module>
hdl(inStr,byref(out))
TypeError: byref() argument must be a ctypes instance, not
'_ctypes.SimpleType'
Also tried the following
>>> out = comtypes.BSTR(u'')
>>> p = pointer(out)
>>> hdl(inStr,p)
Traceback (most recent call last):
File "<pyshell#19>", line 1, in <module>
hdl(inStr,p)
ValueError: Procedure probably called with too many arguments (8 bytes
in excess)
Any feedback would be appreciated.
More information about the Python-list
mailing list