Я пытаюсь сделать вызов для функции обратного вызова в 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