Python ctypes:将结构作为输出参数传递?

Python ctypes:将结构作为输出参数传递?,python,ctypes,Python,Ctypes,c: 我的磁盘正在正确打开,但当我进一步使用sec_句柄时,进一步的代码不起作用 我是否正确地将src_句柄作为输出参数传递? 或者是否有任何方法/需要在testlib.\u lib\u open调用之后强制转换src\u句柄?我不知道这个API,但您几乎肯定必须为结构分配内存(即不是无内存)并传递BYREF。@cdarke:我不确定。看起来\u lib\u open()按值获取最后一个参数。。。如果让我猜的话,我会说这是某种不透明的typedef,OP应该从其他地方获得句柄,或者传递NULL。

c:

我的磁盘正在正确打开,但当我进一步使用sec_句柄时,进一步的代码不起作用

我是否正确地将src_句柄作为输出参数传递?
或者是否有任何方法/需要在testlib.\u lib\u open调用之后强制转换src\u句柄?

我不知道这个API,但您几乎肯定必须为结构分配内存(即不是无内存)并传递BYREF。@cdarke:我不确定。看起来
\u lib\u open()
按值获取最后一个参数。。。如果让我猜的话,我会说这是某种不透明的typedef,OP应该从其他地方获得句柄,或者传递
NULL
。或者是这样,或者有人键入了一个指针,这是另一种邪恶。@Kevin:我正要去,我想把这个srchHandle作为输出传递。是的,Kevin,这是不透明的typedef
VixError _lib_open(const VixDiskLibConnection connection , 
                  const char *diskPath, uint32 flags, VixDiskLibHandle srcHandle)
{
       VixError vixError = VixDiskLib_Open(connection,diskPath,flags,&srcHandle);
       return vixError;
}

// here srcHandle is output parameter assigned from function call
// call steps:
// VixDiskLibHandle  srcHandle;  //VixDiskLibHandle  srcHandle = NULL;
// VixError err = _lib_open(conn, "<diskpath>", flags, srcHandle);
// do something with   srcHandle
class struct_VixDiskLibHandleStruct(Structure):
    pass
VixDiskLibHandle = POINTER(struct_VixDiskLibHandleStructure)


src_handle = None #is it correct?
testlib._lib_open(conn, diskpath, openFlag, src_handle)
# use this handle further
disk_info_ptr = testlib.lib_info(src_handle)