【发布时间】:2021-11-21 03:39:28
【问题描述】:
我有一个第三方库,我需要从中使用 python 脚本中的一个函数。这里是:
ReadFromBlob(PVOID blob, INT blob_size, PCSTR section, PCSTR key, const void **buffer, UINT * size)
- blob - 一些指针?要读取的字节数
- blob_size - blob 大小(以字节为单位)
- 部分和键 - 字符串值,如“Image”
- 缓冲区 - 要读取的字节数
- 大小 - 缓冲区大小
文档给出了如何使用它的示例:
UINT size = 0;
PVOID buffer = NULL;
ReadFromBlob(<blob>, <blob_size>, "MainImage", "Image", &buffer, &size);
我不熟悉 C,所以参数类型让我很困惑。我需要能够从 python 的缓冲区中读取值。 这是我目前所拥有的:
from ctypes import *
lib = cdll.LoadLibrary(path_to_lib)
with open(filepath, 'rb') as file:
data = file.read()
blob_size = c_int(len(data))
blob = cast(c_char_p(data), POINTER(c_char * blob_size.value))
b = bytes()
size = c_uint(len(b))
buffer = cast(cast(b, c_void_p), POINTER(c_char * size.value))
lib.ReadFromBlob(blob, blob_size, b"MainImage", b"Image", buffer, pointer(size))
但最后我仍然得到一个空缓冲区。请帮帮我。
【问题讨论】:
-
你有函数官方文档吗?因为当前版本有点差。