У меня есть встроенная функция, которая ожидает ссылку на определение структуры в C и в C # следующим образом:
typedef struct _dataBlob
{
DWORD length;
BYTE *data;
} DataBlob
[StructLayout(layoutKind.Sequential)]
public struct DataBlob
{
public uint length;
public byte[] data;
}
Я бы передал это нативной функции по ссылке, и она прекрасно работает. Насколько я понимаю, структура прикрепляется для меня перед вызовом и отменяется, когда вызов возвращается. В чем я не уверен, так это когда он прикрепляет эту структуру для меня, также он прикрепляет байт [], указанный в структуре? Должен ли я прикрепить его, чтобы убедиться, что GC не будет перемещать его во время вызова? Есть ли какой-то атрибут, который мне нужно установить, чтобы убедиться, что он закреплен или что для меня в собственной куче создана копия?