Ich erhalte eine AccessViolationExcpetion, wenn ich Marshal.PtrToStructure(intPtr, typeof(Servent)) aufrufe. Irgendwelche Ideen, was ich falsch gemacht habe? Ich habe es auf x64 versucht.
IntPtr intPtr = NativeMethods.GetServByName(name, "tcp");
if (intPtr != IntPtr.Zero)
{
Servent servent = (Servent)Marshal.PtrToStructure(intPtr, typeof(Servent));
result = System.Convert.ToInt32(IPAddress.NetworkToHostOrder(servent.s_port));
}
else
{
throw CreateWSAException();
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
internal struct Servent
{
public string s_name;
public IntPtr s_aliases;
public short s_port;
public string s_proto;
}
0 Stimmen
Es wäre hilfreich, wenn Sie die native Definition der
Servent
-Struktur zur Verfügung stellen könnten; das heißt, wenn Sie darauf Zugriff haben.