int internal_OnHeaderCallback(IntPtr ptrBuffer, int sz, int nmemb, IntPtr ptrUserdata) { if (_OnHeaderCallback != null) { int bytes = sz * nmemb; byte[] b = new byte[bytes]; Marshal.Copy(ptrBuffer, b, 0, bytes); object userdata = GetObject(ptrUserdata); return _OnHeaderCallback(b, bytes, userdata); } return 0; }