我正在尝试在python中调用回调函数。 我有一个dll出现在路径上说'dllpath'。 这个DLL有一个回调函数如下所述:
功能原型: ULONG SetByteTotalsCallback(tFNByteTotals pCallback,BYTE interval);
参数说明: tFNByteTotals pCallback:mode-IN,回调函数指针 BYTE间隔:mode-IN,间隔秒(
)回调原型: 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)) 被叫并成功返回。
有人能帮助我吗? 提前谢谢。
此致 GEET