public unsafe int ReadSegments(IntPtr aWriter, IntPtr aClosure, uint aCount)
{
int length = (int)Math.Min(aCount, Available());
int writeCount = 0;
if (length > 0)
{
nsWriteSegmentFun fun = (nsWriteSegmentFun)Marshal.GetDelegateForFunctionPointer(aWriter, typeof(nsWriteSegmentFun));
fixed (byte * data = &Data[Position])
{
int result = fun(this, aClosure, (IntPtr)data, Position, length, out writeCount);
}
Position += writeCount;
}
return writeCount;
}