【发布时间】:2020-02-08 03:02:56
【问题描述】:
我正在尝试对特定 ioctl 进行完整的“仅限 python”* 实现。
这涉及到创建一个打包的结构。 C 等效结构没有类型化指针,而是将指针地址存储为无符号 64 位整数。这些地址指向的缓冲区将存储调用的返回数据。目前,我正在努力让打包的结构正确构建。
作为一个非工作示例
ret_buf = ctypes.create_string_buffer(4096)
struct.pack("I", ctypes.POINTER(ret_buf))
这抱怨参数不是整数。通过引用使用的变体、c_char_p 等也不起作用。
有没有办法将地址作为整数返回?或者类似的一系列可能有效的演员表?
*我知道我们可以使用 C-Bindings 和一些包装器来做到这一点,但如果可能的话,我们希望尽可能多地在 python 中保留东西,以简化我们的构建和集成过程。
【问题讨论】:
标签: python c python-3.x pointers ioctl