1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# StringToHGlobalAnsi: Copia el contenido de un String administrado en la memoria no administrada, convirtiéndolo en formato ANSI mientras realiza la copia. # PtrToStringAnsi: Asigna un String administrado y copia en él total o parcialmente una cadena ANSI (en Windows) o UTF-8 (en Unix) no administrada. $a = "hola" $b = "adios" # Dirección del primer carácter de la cadena no administrada. Dirección, en memoria no administrada, donde se copió la cadena o 0 si $a es null. $ptra = [Runtime.InteropServices.Marshal]::StringToHGlobalAnsi($a); $ptra $ptrb = [Runtime.InteropServices.Marshal]::StringToHGlobalAnsi($b); $ptrb # Diferencia entre los dos Ptr $diferencia = $ptrb.ToInt64() - $ptra.ToInt64() # Obtener el valor de una variable en base a una dirección Ptr de otra variable [Runtime.InteropServices.Marshal]::PtrToStringAnsi($ptra.ToInt64()+$diferencia) |