Python ctypes整数指针

Python ctypes整数指针,python,ctypes,Python,Ctypes,如何使用python ctypes实现此函数 extern int __stdcall GetRate(HANDLE hDev, int* pData) 如何设置数据类型以便我可以打印pData值如果要调用名为GetRate的函数,可以按以下方式执行: from ctypes import * from ctypes.wintypes import * GetRate = windll.YOURLIB.GetRate GetRate.restype = c_int GetRate.argt

如何使用python ctypes实现此函数

extern  int __stdcall GetRate(HANDLE hDev, int* pData)

如何设置数据类型以便我可以打印pData值

如果要调用名为
GetRate
的函数,可以按以下方式执行:

from ctypes import *
from ctypes.wintypes import *

GetRate = windll.YOURLIB.GetRate
GetRate.restype = c_int
GetRate.argtypes = [HANDLE, POINTER(c_int)]

# now call GetRate as something like:
#
# hDev = ... # handle
# Data = c_int()
#
# GetRate(hDev, byref(Data)) # GetRate(hDev, &Data)
# print Data
但是,如果您试图声明回调函数指针,您可以这样做(我认为您正在寻找第一个):


感谢您的回复,我正在寻找第一个,但是当我打印数据时,回复是这样的
c_long(104)
为什么不打印实际数据value@ganeshredcobra我不确定这是从哪里来的,但是
culong(104)
是一个对象,您可以将其内容打印为
cuint(104).value
@ganeshredcobra:
c_int
在32位平台或Win64上是
c_long
,但结果是得到一个ctypes数据类型是不可想象的。简单类型具有以
restype
形式返回Python对象的getter。
from ctypes import *
from ctypes.wintypes import *

def GetRate(hDev, pDate):
    # Your implementation
    return 0

# you'll need GETRATE to pass it in the argtypes to the target function
GETRATE = WINFUNCTYPE(c_int, HANDLE, POINTER(c_int))
pGetRate = GETRATE(GetRate)

# now you can pass pGetRate as a callback to another function