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

◆ ReadMemoryBlockNoLock()

static unsafe NativeHeapMemoryBlock System.Reflection.Internal.StreamMemoryBlockProvider.ReadMemoryBlockNoLock ( Stream stream,
bool isFileStream,
long start,
int size )
inlinestaticpackage

Definition at line 50 of file StreamMemoryBlockProvider.cs.

51 {
52 NativeHeapMemoryBlock nativeHeapMemoryBlock = new NativeHeapMemoryBlock(size);
53 bool flag = true;
54 try
55 {
56 stream.Seek(start, SeekOrigin.Begin);
57 int num = 0;
58 if (!isFileStream || (num = FileStreamReadLightUp.ReadFile(stream, nativeHeapMemoryBlock.Pointer, size)) != size)
59 {
60 stream.CopyTo(nativeHeapMemoryBlock.Pointer + num, size - num);
61 }
62 flag = false;
63 }
64 finally
65 {
66 if (flag)
67 {
68 nativeHeapMemoryBlock.Dispose();
69 }
70 }
71 return nativeHeapMemoryBlock;
72 }

References System.Reflection.Internal.NativeHeapMemoryBlock.Dispose(), System.Reflection.Internal.NativeHeapMemoryBlock.Pointer, System.Reflection.Internal.FileStreamReadLightUp.ReadFile(), System.start, and System.stream.

Referenced by System.Reflection.PortableExecutable.PEReader.PEReader(), System.Reflection.Metadata.MetadataReaderProvider.FromMetadataStream(), and System.Reflection.Internal.StreamMemoryBlockProvider.GetMemoryBlockImpl().