Чтение файла с использованием 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 и много других вариантов, поведение не меняется.

Re: Чтение файла с использованием rtAPIlt из C#

спасибо за ваш вопрос, посмотрим.

Re: Чтение файла с использованием rtAPIlt из C#

будьте добры пришлите CS файлик с описанием dllimport и пример вызова функции?

Re: Чтение файла с использованием rtAPIlt из C#

пока вот такое нашли:

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);
в length надо класть длину массива, после того, как размер файла известен.

Re: Чтение файла с использованием rtAPIlt из C#

Спасибо! Проблема была действительно в последнем параметре. Теперь всё работает.