¿Cómo obtener las direcciones de variables, estructuras, arrays y funciones en VB.net?
¿Importado? sistema. tiempo de ejecución. ¿Servicios de interoperabilidad? ¿Tiene que ser aquí?
¿Público? ¿clase? Formulario 1
¿Público? ¿estructura? punto m
¿Oscuro? ¿incógnita? ¿Como? Entero
¿Atenuado? ¿y? ¿Como? Entero
¿Fin? Estructura
¿Privada? ¿Sub? Button1_Click(¿ByVal?Remitente?As?System.Object,?ByVal?e?As?System.EventArgs)? ¿manejar? Botón 1. Haga clic en
¿Atenuar? ¿I? ¿Como? ¿Entero? =?50
¿Oscuro? ai()? ¿Como? ¿Entero? =?{1,?2,?3,?4,?5}
¿Atenuado? ¿Pi? ¿Como? ¿IntPtr? =?GChandle. Alloc (i, GCHandleType. fijado). AddrOfPinnedObject()? ¿Obtener un puntero a una variable entera?
¿Oscuro? ¿grupo? ¿Como? ¿IntPtr? =?GChandle. Alloc (ai, GCHandleType. fijado). AddrOfPinnedObject()? Obtiene un puntero a la primera dirección de una matriz de enteros.
¿MsgBox(marshal.ReadInt32(pi,?0))? Vuelve a leer el valor señalado por el puntero a la variable entera.
MsgBox(marshal.ReadInt32(pai,?0?*?4))?Vuelve a leer el primer elemento de la matriz.
MsgBox(marshal.ReadInt32(pai,?1?*?4))?Vuelve a leer el segundo elemento de la matriz.
MsgBox(marshal.ReadInt32(pai,?2?*?4))? Vuelve a leer el tercer elemento de la matriz.
-La siguiente es la estructura-.
¿Oscuro? m_p? ¿Como? ¿Nuevo? punto m
m_p.x? =?100
m_p.a? =?50
¿Oscuro? pm_p? ¿Como? ¿IntPtr? =?GChandle. Alloc (m_p, ? GCHandleType. fijado). AddrOfPinnedObject()? ¿Obtener el puntero de dirección del encabezado de la estructura?
MsgBox(marshal.ReadInt32(pm_p,?0?*?4))? Vuelve a leer el primer valor de la estructura.
MsgBox(marshal.ReadInt32(pm_p,?1?*?4))? Vuelve a leer el segundo valor de la estructura.
¿Fin? Submarino
¿Fin? Clase