У меня есть приложение, которое должно получить указатель своего массива string [] из управляемого dll. Кроме того, приложение снова передает этот указатель в управляемую dll, и внутри dll по этому указателю мне снова нужно получить доступ к массиву string [] и внести некоторые изменения.
Мне нужны 2 функции для этого, они должны выглядеть примерно так это:
public long GetPointer(ref string[] array)
{
//somehow get the unmanaged pointer of array.
//do not need to allocate any memory by Marshal.Copy or something, just get existing unmananged address of array
//it could be like:
//string* ptrStr= *array;
//but of course this does not work
long ptr = ...;
return ptr;
}
public void SetValue(long ptr, int index, string value)
{
//somehow get string[] array using pointer address, without allocating anything
//just address of existing array
string[] array = ...;
array[index] = value;
}
Это легко сделать в c ++, но я хочу знать: возможно ли это сделать в C#? Как? Я видел примеры получения указателя массива int [], и я сделал это, но он не работает со строками.
PS Я знаю, как вызвать управляемый dll из приложения. Мне нужен только код "..." в C#.