我正在尝试将下面一行C代码翻译成ctypes。下面是我要翻译的C程序的一个片段:
pIfRow = (MIB_IF_ROW2 *) malloc(sizeof(MIB_IF_ROW2));
SecureZeroMemory((PVOID)pIfRow, sizeof(MIB_IF_ROW2));
(注意,MIB_IF_ROW2是一个结构,在Netioapi.h中定义)
无论如何,我可以在ctypes中很好地翻译第一行,假设MIB_ROW2已经被定义为ctypes结构:
from ctypes import *
# Translate first line of C Code
buff = create_string_buffer(sizeof(MIB_IF_ROW2))
p_if_row = cast(buff, POINTER(MIB_IF_ROW2))
# Second Line... ?
但当我到了第二条线,我就被卡住了。我在文档或网上找不到任何与该函数对应的ctypes。最好的办法是什么?你知道吗
SecureZeroMemory
只会用零填充传递给它的内存。您应该使用ZeroMemory
/memset
或python中的普通循环得到完全相同的结果。使它“安全”的原因是它不应该被编译器优化(当编程在像C/C++一样低的级别)。你知道吗在你刚刚使用的内存中使用它并不是它的预期目的(尽管无害),它应该这样使用:
相关问题 更多 >
编程相关推荐