问题标签 [ctypes]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1259 浏览

python - ctypes指针问题

我正在阅读 ctypes 教程,我遇到了这个:

但我一直在使用这样的指针:

为什么当我用一种方式做时,我可以访问 c_s.value,而当我用另一种方法做时,没有值对象?

谢谢大家!

0 投票
2 回答
15741 浏览

python - 预期的 LP_c_double 实例而不是 c_double_Array - python ctypes 错误

我在 DLL 中有一个函数,我必须用 python 代码包装它。该函数需要一个指向双精度数组的指针。这是我得到的错误:

我试着像这样铸造它:

但我得到:

非常感谢任何帮助或指导。谢谢大家!

0 投票
2 回答
4462 浏览

python - 如何使用 Python 的 ctypes 和 readinto 读取包含数组的结构?

我们有一些由 C 程序创建的二进制文件。

通过调用 fwrite 将以下 C 结构写入文件来创建一种类型的文件:

在 Python 中,我读取该文件的结构如下:

这很好用。我们的其他类型的文件是使用以下结构创建的:

我不确定如何在 Python 中创建结构。

0 投票
1 回答
4795 浏览

python - ctypes 内存管理:如何以及何时释放分配的资源?

我正在用 Ctypes 为 Python 中的 C 库编写一个小包装器,我不知道从 Python 分配的结构是否会在超出范围时自动释放。

例子:

在 foo 返回后,那个点还会“活着”吗?我必须打电话clib.free(pointer(p))吗?还是 ctypes 提供了一个函数来释放为 C 结构分配的内存?

0 投票
3 回答
7301 浏览

python - Python ctypes 和没有足够的参数(缺少 4 个字节)

我试图调用的函数是:

从使用windll的自定义dll。

结果是:

使用 cdll 将字节丢失计数器增加到 12。上面的 errcode 是从同一个 dll 中的另一个函数返回的 errercode。如何正确接听电话?

0 投票
2 回答
1145 浏览

python - 在win32上使用python和ctypes获取列表框内容时出现问题

感谢 python 和 ctypes,我想获取列表框的内容。

项目的数量是正确的,但文字是错误的。所有 text_len 均为 4,文本值类似于 '0\xd9\xee\x02\x90'

我尝试使用具有类似结果的 unicode 缓冲区。

我没有发现我的错误。任何的想法?

0 投票
1 回答
1729 浏览

python - Python CreateFile 找不到 PhysicalMemory

我正在尝试访问 Windows 2000 系统的物理内存(尝试在没有内存转储工具的情况下执行此操作)。我的理解是我需要使用 CreateFile 函数来创建句柄。我使用了旧版本的win32dd来帮助我解决这个问题。网络上的其他文档指向我使用“\Device\PhysicalMemory”或“\\.\PhysicalMemory”。不幸的是,我得到了相同的错误。

实际上,每次运行返回的错误号都不同 \\.\PhysicalMemory == 3 和 \Device\PhysicalMemory == 2。对 pywin32、win32file、createfile、pyhandle 和 pywintypes 的审查没有产生关于不同返回值的信息.

这是我的代码。我正在使用 py2exe 让它在 Windows 2000 上运行(是的,它编译成功)。我意识到我可能对 DeviceIoControl 也有问题,但现在我专注于 CreateFile。

谢谢,切图

0 投票
5 回答
11066 浏览

pointers - Python ctypes:复制结构的内容

我想用 ctypes 在 Python 中模仿一段 C 代码,代码类似于:

在 ctypes 中,无法执行以下操作:

因为contents仍然是一个 Python ctypes Structure 对象,它本身作为引用进行管理。

一个明显的解决方法是手动复制每个字段(表示为不可变的 python int),但这不适用于更复杂的结构。此外,对于不是基本类型而是结构化类型的字段,需要递归完成。

我的另一个选择是使用memmove和复制对象,就好像它们是缓冲区一样,但这似乎很容易出错(因为 Python 是动态类型的,所以将它与不同类型和大小的对象一起使用太容易了,导致内存损坏或分段故障)...

有什么建议么?

编辑

我也可以使用结构的全新副本,所以这可能有用:

但我不知道是否可能存在某种奇怪的行为来复制 ctypes 代理,就好像它们是普通的 Python 对象一样......

0 投票
1 回答
1207 浏览

python - 访问被拒绝在 Vista 上加载带有 ctypes 的 dll

我在使用 ctypes 时遇到问题。我正在尝试让以下项目在 Vista 上运行。

http://sourceforge.net/projects/fractalfrost/

我之前在 Vista 上使用过该项目,没有任何问题。我没有看到 svn 中的任何想法发生了变化,这导致了我认为这是这台机器本地的东西。事实上,我根本无法使用 ctypes 加载 dll。

有什么想法会导致这种情况以及更好的解决方法吗?

0 投票
2 回答
20458 浏览

python - 在 ctypes.Structure 中使用枚举

我有一个通过 ctypes 访问的结构:

到目前为止,我的 Python 代码如下:

但我不确定batch_op枚举使用什么。我应该把它映射到一个c_intor 吗?