Im trabajando hacia un archivo DLL para el SDK de un software y estoy tratando de llamar a una función para obtener información acerca del anfitrión del software.P/Invoke, C#: unsigned char perder un byte
hay dos variables char sin signo (HostMachineAddress, HostProgramVersion) en la estructura que la función quiere y parece que "pierdo" el último byte cuando intento llamarlo desde C# ... si cambio SizeConst en el C# struct below to 5 obtengo el byte perdido, sin embargo, causa que la otra variable pierda datos.
es posible que alguien me ayude a encontrar una manera de resolver este problema? También tratar de utilizar una clase en lugar de struct causa de error system.stackoverflow
C# Struct
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct sHostInfo
{
public int bFoundHost;
public int LatestConfirmationTime;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
public string szHostMachineName;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
public string HostMachineAddress;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
public string szHostProgramName;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
public string HostProgramVersion;
}
C#
[DllImport("Cortex_SDK.dll")]
public static extern int GetHostInfo(out sHostInfo pHostInfo);
¿Por qué HostProgramVersion y szHostProgramName intercambiados en su código C#? – Fox32