Use *c_void for opaque pointer