Issue #23 resolved
Add ctypes support
from an e-mail on pyobjc-dev:
I'm getting an error when calling SMJobBless - "ValueError: depythonifying 'pointer', got 'LP_c_void_p'". I've tried a few things without luck. Any help will be appreciated. Here's my code - from ServiceManagement import ( kSMDomainSystemLaunchd, SMJobBless, ) security = ctypes.cdll.LoadLibrary(ctypes.util.find_library('Security')) class AuthorizationItem(ctypes.Structure): _fields_ = [ ('name', ctypes.c_char_p), ('valueLength', ctypes.c_uint32), ('value', ctypes.c_void_p), ('flags', ctypes.c_uint32), ] class AuthorizationRights(ctypes.Structure): _fields_ = [ ('count', ctypes.c_uint32), ('items', ctypes.POINTER(AuthorizationItem)), ] authorization_item = AuthorizationItem( name='com.apple.ServiceManagement.blesshelper', valueLength=0, value=None, flags=0, ) authorization_rights = AuthorizationRights( count=1, items=ctypes.pointer(authorization_item), ) authorization_flags = 19 authorization_ref = ctypes.POINTER(ctypes.c_void_p)() status = security.AuthorizationCreate( ctypes.pointer(authorization_rights), None, authorization_flags, ctypes.pointer(authorization_ref), ) SMJobBless( kSMDomainSystemLaunchd, 'app.helper', authorization_ref, None, )
PyObjC should recognize the ctypes pointer types and should assume that the user knows what he's doing and pass the C pointer wrapped by ctypes to the C function.