Я использую собственные функции и имею небольшую проблему с marshaling structs в C#. У меня есть указатель на структуру в другой структуре - например, C#:Marshaling in C# - передача указателя на ссылку структуры ("double ref"?)
[StructLayout(LayoutKind.Sequential, Pack=1, CharSet = CharSet.Auto)]
public struct PARENT
{
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
public string Name;
[MarshalAs(UnmanagedType.Struct, SizeConst=8)]
public CHILD pChild;
}
[StructLayout(LayoutKind.Sequential, Pack=1, CharSet = CharSet.Auto)]
public struct CHILD
{
public UInt32 val1;
public UInt32 val2;
}
В структуре PARENT у меня должен быть указатель на структуру CHILD. Мне нужно передать «указатель на ссылку» (структуры PARENT) в качестве аргумента функции API.
Нет проблем с одиночной ссылкой («ref PARENT» в качестве аргумента импортированной функции dll), но как передать «ref ref»? Возможно ли использование небезопасного кода (с помощью C-указателя)?
поздравления Артур
В чем проблема с 'ref parent.pChild'? – SimpleVar
Объявите CHILD как класс вместо этого и удалите атрибут, вы получите бесплатный указатель. –