Как получить значения параметров функции обратного вызова? - PullRequest
1 голос
/ 15 июня 2011

Я пытаюсь сделать вызов для функции обратного вызова в Python. У меня есть dll, присутствующий на пути, скажите 'dllpath'. Эта dll имеет функцию обратного вызова, указанную ниже:

Прототип функции: ULONG SetByteTotalsCallback (tFNByteTotals pCallback, интервал BYTE);

Параметр описания: tFNByteTotals pCallback: mode-IN, указатель функции обратного вызова Интервал BYTE: режим 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

...