/// <summary> /// Returns buffer data /// </summary> public byte[] GetBuffer(int index) { // check object state if (_disposed) { throw new ObjectDisposedException(GetType().FullName); } // parameters validation if ((index < 0) || (index >= BuffersCount)) { throw new ArgumentOutOfRangeException("count"); } // get buffer descriptor IntPtr secBuffer = IntPtrHelper.Add(pvBuffers, index * SSPINative.SecBuffer.Size); // return buffer int size = MarshalHelper.ReadInt32(secBuffer, typeof(SSPINative.SecBuffer), "BufferSize"); if (size > 0) { return(MarshalHelper.ReadBytes(secBuffer, typeof(SSPINative.SecBuffer), "pvBuffer", size)); } else { return(null); } }