int internal_OnReadCallback(IntPtr ptrBuffer, int sz, int nmemb, IntPtr ptrUserdata)
{
if (_OnReadCallback != null)
{
object userdata = GetObject(ptrUserdata);
byte[] buffer;
int size = _OnReadCallback(out buffer, sz * nmemb, userdata);
if (size == 0 || buffer == null)
return 0;
Marshal.Copy(buffer, 0, ptrBuffer, size);
return buffer.Length;
}
return 0;
}