[issue27803] ctypes automatic byref failing on custom classes attributes

Erwan Le Pape report at bugs.python.org
Mon Aug 29 11:55:22 EDT 2016


Erwan Le Pape added the comment:

I can confirm Eryk got what I meant. I didn't know if it was meant to work that way or if it was simply something that was overlooked so I thought I'd ask, I will look into the ctypes code to provide a patch sometime this week if I can.

Terry, for a working example take the following (on a MS Windows):
>>> from ctypes import *
>>> from ctypes.wintypes import *
>>>
>>> class CustomPHKEY(object):
...     def __init__(self, value):
...             self._as_parameter_ = HKEY(value)
...
>>>
>>> function = ctypes.windll.advapi32.RegOpenKeyExW
>>> function.argtypes = [HKEY, c_wchar_p, DWORD, DWORD, POINTER(HKEY)]
>>> function.restype = LONG
>>> result = CustomPHKEY(0)
>>> function(0x80000002, 'SOFTWARE', 0, 0x20019, result)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ctypes.ArgumentError: argument 5: <type 'exceptions.TypeError'>: expected LP_c_void_p instance instead of c_void_p

----------

_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue27803>
_______________________________________


More information about the Python-bugs-list mailing list