Чтение файла с использованием rtAPIlt из C#
Добрый день!
Описал DllImport для функций библиотеки rtAPIlt.dll. Практически все функции работают корректно (включая создание директорий и файлов, запись файла, ...). Проблема только с функцией rtlReadFile.
Перебрал все возможные способы импорта функции и передаваемых параметров. При вызове всегда возвращается 0x8007007a (Область данных, переданная по системному вызову, слишком мала). При этом
в dataLen возвращается правильная длина файла, а буфер с данными не заполняется.
Пример одного из вариантов импорта:
[DllImport("rtAPIlt.dll", EntryPoint = "rtlReadFile", CharSet = CharSet.Ansi,
SetLastError = true, CallingConvention = CallingConvention.StdCall)]
public static extern unsafe uint rtlReadFile(RTLFile file, uint offset, uint length, byte* data, uint* dataLen);
Вызов:
var buff = new byte[6];
uint length = 0;
fixed (byte* pBuff = &buff[0])
{
byte* outBuff = pBuff;
var err = RtAPIltImport.rtlReadFile(file, 0, 6, outBuff, &length);
}
Пробовал варианты с IntPtr и много других вариантов, поведение не меняется.