Python ctypes。如何将IN LPVOID传递给C ++函数

时间:2013-04-05 09:12:59

标签: python ctypes

我正在尝试使用ctypes将字符串传递给C ++函数,并获得一个作为回报。函数声明是:

BOOL PERFORMAXCOM_API _stdcall SendReceive(IN HANDLE pHandle, 
                          IN LPVOID wBuffer,
                          IN DWORD dwNumBytesToWrite,
                          IN DWORD dwNumBytesToRead,
                          OUT LPVOID rBuffer)

我对HANDLEDWORD变量感到满意,并且通过以下设置在类似的函数中实现了OUT LPVOID

szReplyBuffer = create_string_buffer(64)
ReplyBuffer = c_char_p(addressof(szReplyBuffer))

当与类似的OUT LPVOID一起使用时会返回一个字符串。

我从输入的字符串IN LPVOID创建cmdStr的当前方法(例如“E0 = 1”)是:

szSendStr = c_char * 64
SendStr = szSendStr()

for i in range(len(cmdStr)):
    SendStr[i] = cmdStr[i]

然后我使用以下声明将其传递给函数:     Status = SendReceive(byref(hUSBDevice), c_void_p(addressof(SendStr)), 64, 64, ReplyBuffer)

我已尝试过将SendStr传递给函数的许多不同排列,但绝不会在ReplyBuffer中通过空字符串获取任何内容。有没有办法传递我错过的字符串?

由于

劳伦斯

0 个答案:

没有答案