Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ Initialize() [2/2]

unsafe void System.IO.UnmanagedMemoryStream.Initialize ( SafeBuffer buffer,
long offset,
long length,
FileAccess access )
inlineprotectedinherited

Definition at line 146 of file UnmanagedMemoryStream.cs.

147 {
148 if (buffer == null)
149 {
150 throw new ArgumentNullException("buffer");
151 }
152 if (offset < 0)
153 {
154 throw new ArgumentOutOfRangeException("offset", SR.ArgumentOutOfRange_NeedNonNegNum);
155 }
156 if (length < 0)
157 {
158 throw new ArgumentOutOfRangeException("length", SR.ArgumentOutOfRange_NeedNonNegNum);
159 }
160 if (buffer.ByteLength < (ulong)(offset + length))
161 {
162 throw new ArgumentException(SR.Argument_InvalidSafeBufferOffLen);
163 }
164 if (access < FileAccess.Read || access > FileAccess.ReadWrite)
165 {
166 throw new ArgumentOutOfRangeException("access");
167 }
168 if (_isOpen)
169 {
170 throw new InvalidOperationException(SR.InvalidOperation_CalledTwice);
171 }
172 byte* pointer = null;
173 try
174 {
175 buffer.AcquirePointer(ref pointer);
176 if (pointer + offset + length < pointer)
177 {
178 throw new ArgumentException(SR.ArgumentOutOfRange_UnmanagedMemStreamWrapAround);
179 }
180 }
181 finally
182 {
183 if (pointer != null)
184 {
185 buffer.ReleasePointer();
186 }
187 }
188 _offset = offset;
189 _buffer = buffer;
190 _length = length;
192 _access = access;
193 _isOpen = true;
194 }

References System.IO.UnmanagedMemoryStream._access, System.IO.UnmanagedMemoryStream._buffer, System.IO.UnmanagedMemoryStream._capacity, System.IO.UnmanagedMemoryStream._isOpen, System.IO.UnmanagedMemoryStream._length, System.IO.UnmanagedMemoryStream._offset, System.SR.Argument_InvalidSafeBufferOffLen, System.SR.ArgumentOutOfRange_NeedNonNegNum, System.SR.ArgumentOutOfRange_UnmanagedMemStreamWrapAround, System.buffer, System.SR.InvalidOperation_CalledTwice, System.length, System.offset, and System.pointer.

Referenced by System.IO.MemoryMappedFiles.MemoryMappedViewStream.MemoryMappedViewStream(), System.IO.PinnedBufferMemoryStream.PinnedBufferMemoryStream(), System.IO.UnmanagedMemoryStream.UnmanagedMemoryStream(), System.IO.UnmanagedMemoryStream.UnmanagedMemoryStream(), System.IO.UnmanagedMemoryStream.UnmanagedMemoryStream(), and System.IO.UnmanagedMemoryStream.UnmanagedMemoryStream().