如何获取回调函数的参数值?

时间:2011-06-15 12:21:10

标签: python function parameters callback

我正在尝试在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

0 个答案:

没有答案