通过python中的指针访问作为另一个结构的成员的结构

时间:2012-11-29 12:21:33

标签: python pointers structure pass-by-reference ctypes

我的结构如下

class DEVINFO(Structure):
       _fields_ = [("szDeviceName", c_char*MAX_PATH),                                           
                   ("pDevExtension", POINTER(DEVEXTENSION))]

在上面,DEVEXTENSION结构如下

class DEVEXTENSION(Structure):
            _fields_ = [("szProductName",c_char*MAX_PATH),
                        ("szManfName",c_char*MAX_PATH),
                        ("szSerialNumber",c_char*32)]

我的问题是如何访问“DEVEXTENSION”结构的成员。

devInfo = DEVINFO()
devInfo.szDeviceName = "USB Flash 302"
print(devInfo.szDeviceName)

1 个答案:

答案 0 :(得分:2)

来自the ctypes tutorial

  

指针实例具有返回对象的contents属性   指针指向

所以,devInfo.pDevExtensions.contents.szProductName例如,假设DEVINFO将生成DEVEXTENSION实例 - 对我而言,这里并不明显(但我对ctypes并不熟悉。

另请注意,PEP-8建议CapWords用于类名,CAPS为常量保留。{/ p>