问题描述
|
我正在尝试在python中调用回调函数。
我在路径“ \ dllpath \”中存在一个dll。
该dll具有如下所述的回调函数:
功能原型:
ULONG SetBytetotalsCallback(tFNBytetotals pCallback,BYTE间隔);
参数说明:
tFNBytetotals pCallback:模式输入,回调函数指针
字节间隔:模式输入,间隔以秒为单位
回调原型:
void BytetotalsCallback(ULONGLONG txTotalBytes,ULONGLONG rxTotalBytes);
我想调用函数SetBytetotalsCallback,并且要打印txTotalBytes和rxTotalBytes的值。
我尝试使用以下代码:
from ctypes import *
filepath = r\"<path to dll>\"
gdll = WinDLL(filepath)
tx = c_longlong
rx = c_longlong
pCallback = CFUNCTYPE(tx,rx)
def BytetotalsCallback(t,r):
try:
print \'Printing tx and rx: \'
#print \'Transmitted bytes: \',t[0]
#print \'Received bytes: \',r[0]
#return 0
except:
print \'Error...\'
bytetotal_func =pCallback(BytetotalsCallback)
SetBytetotalsCallback = gdll.SetBytetotalsCallback
try:
print \'Return of SetBytetotals: \',SetBytetotalsCallback(pCallback(BytetotalsCallback),c_byte(128))
except:
print \'Error found: \'
执行上述代码后,我发现函数BytetotalsCallback没有被调用,但是SetBytetotalsCallback(pCallback(BytetotalsCallback),c_byte(128))
接到电话并成功返回。
有人能帮我吗?
提前致谢。
问候,
吉特
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)