コード例 #1
0
        /// <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);
            }
        }