发布于 2016-05-20 18:30:25
使用c_void_p或LPVOID。这将是指针的大小,而实际类型并不重要,因为您永远不会访问Internal和InternalHigh成员。
使用POINTER(ULONG)可以工作,但POINTER(c_char)或任何其他指针类型也一样。类型仍然是错误的,只不过现在您正在分配一个不需要的新类型对象。
如果需要使用它们的“正确”类型访问内部成员,则需要定义两种不同的重叠结构中的一种,这取决于您使用的是32位版本还是64位版本的Python。类似于:
if ctypes.sizeof(ctypes.c_void_p) == 8:
ULONG_PTR = ctypes.u_longlong
else:
ULONG_PTR = ctypes.u_long
class OVERLAPPED(ctypes.Structure):
_fields_ = [("Internal", ULONG_PTR),
("InternalHigh", ULONG_PTR),
...]https://stackoverflow.com/questions/37353373
复制相似问题