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

◆ GetMemoryBlockImpl()

override AbstractMemoryBlock System.Reflection.Internal.StreamMemoryBlockProvider.GetMemoryBlockImpl ( int start,
int size )
inlineprotected

Definition at line 74 of file StreamMemoryBlockProvider.cs.

75 {
76 long start2 = _imageStart + start;
77 if (_useMemoryMap && size > 16384)
78 {
79 if (TryCreateMemoryMappedFileBlock(start2, size, out var block))
80 {
81 return block;
82 }
83 _useMemoryMap = false;
84 }
85 lock (_streamGuard)
86 {
87 return ReadMemoryBlockNoLock(_stream, _isFileStream, start2, size);
88 }
89 }
static unsafe NativeHeapMemoryBlock ReadMemoryBlockNoLock(Stream stream, bool isFileStream, long start, int size)
bool TryCreateMemoryMappedFileBlock(long start, int size, [NotNullWhen(true)] out MemoryMappedFileBlock block)

References System.Reflection.Internal.StreamMemoryBlockProvider._imageStart, System.Reflection.Internal.StreamMemoryBlockProvider._isFileStream, System.Reflection.Internal.StreamMemoryBlockProvider._stream, System.Reflection.Internal.StreamMemoryBlockProvider._streamGuard, System.Reflection.Internal.StreamMemoryBlockProvider._useMemoryMap, System.Reflection.Internal.StreamMemoryBlockProvider.ReadMemoryBlockNoLock(), System.start, and System.Reflection.Internal.StreamMemoryBlockProvider.TryCreateMemoryMappedFileBlock().