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.