예제 #1
0
 public override void SetLength(long value)
 {
     if (SizeableStream != null)
     {
         TResult.ThrowIfFailed(SizeableStream.SetStreamSize(value));
         return;
     }
     throw new NotSupportedException();
 }
예제 #2
0
        public override void Write(byte[] buffer, int offset, int count)
        {
            IntPtr unmanaged = GetUnmanagedBuffer(ref count);

            try
            {
                for (int i = 0; i < count; i++)
                {
                    Marshal.WriteByte(unmanaged, i, buffer[offset + i]);
                }

                int writtenBytes = 0;
                int result       = BaseStream.Write(unmanaged, count, ref writtenBytes);
                TResult.ThrowIfFailed(result);
            }
            finally
            {
                ReleaseUnmanagedBuffer(unmanaged);
            }
        }