Python ctypes:将结构作为输出参数传递?
c: 我的磁盘正在正确打开,但当我进一步使用sec_句柄时,进一步的代码不起作用 我是否正确地将src_句柄作为输出参数传递?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。
或者是否有任何方法/需要在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)