Como alterar campos de estrutura usando ponteiros pyty ctypes
Abaixo está o código onde estou acessando os valores de dll usando ctypes.
Minha intenção é armazenar os endereços dos campos da estrutura. Sempre que os valores na estrutura forem alterados, posso acessar os endereços e obter valores alterados.
DUMMY_DLL_PATH = "dummyModel.dll"
class MyStruct(ctypes.Structure):
_fields_ = [("field_one", ctypes.c_int),
("field_two", ctypes.c_int)]
d_m = ctypes.cdll.LoadLibrary(DUMMY_DLL_PATH)
d_i = MyStruct.in_dll(d_m,"dummy_In")
in_field = ctypes.c_int(d_i.field_one)
#storing the address
b = ctypes.addressof(in_field)
b_v = ctypes.cast(b,ctypes.POINTER(ctypes.c_int))
k= b_v.contents
print 'before',d_i.field_one,k.value
#changing the value
d_i.field_one = 10
print 'After',d_i.field_one,k.value
Saída:Before 0 0
After 10 0
Através de ponteiros, os valores não estão sendo alterados.