Python 指向使用 ctypes 的打包结构中 uint_64 的指针地址?
Python pointer address to an uint_64 in a packed struct using ctypes?
我正在尝试完全 "python only"* 实现特定的 ioctl。
这涉及创建一个压缩结构。 C 等效结构没有类型指针,而是将指针地址存储为无符号 64 位整数。这些地址指向的缓冲区将存储来自调用的 return 数据。目前,我正在努力让打包结构正确构建。
作为一个非工作示例
ret_buf = ctypes.create_string_buffer(4096)
struct.pack("I", ctypes.POINTER(ret_buf))
这抱怨参数不是整数。通过引用使用的变体、c_char_p 等也不起作用。
有没有办法将地址 returned 作为整数?或者类似的一系列可能有效的转换?
*我知道我们可以使用 C-Bindings 和那里的一些包装器来做到这一点,但如果可能的话,我们希望尽可能多地在 python 中保留内容,以简化我们的构建和集成过程。
也许使用addressof
哪个
Returns the address of the memory buffer as integer.
我正在尝试完全 "python only"* 实现特定的 ioctl。
这涉及创建一个压缩结构。 C 等效结构没有类型指针,而是将指针地址存储为无符号 64 位整数。这些地址指向的缓冲区将存储来自调用的 return 数据。目前,我正在努力让打包结构正确构建。
作为一个非工作示例
ret_buf = ctypes.create_string_buffer(4096)
struct.pack("I", ctypes.POINTER(ret_buf))
这抱怨参数不是整数。通过引用使用的变体、c_char_p 等也不起作用。
有没有办法将地址 returned 作为整数?或者类似的一系列可能有效的转换?
*我知道我们可以使用 C-Bindings 和那里的一些包装器来做到这一点,但如果可能的话,我们希望尽可能多地在 python 中保留内容,以简化我们的构建和集成过程。
也许使用addressof
哪个
Returns the address of the memory buffer as integer.