/base/Drivers/S3Trio64/BitmapFileHeader.cs
C# | 62 lines | 46 code | 6 blank | 10 comment | 3 complexity | dba1020efaa431e413646d3d3217168b MD5 | raw file
- ///////////////////////////////////////////////////////////////////////////////
- //
- // Microsoft Research Singularity
- //
- // Copyright (c) Microsoft Corporation. All rights reserved.
- //
- // File: BitmapFileHeader.cs
- //
- // Note:
- //
- #define BUG
-
- using System;
- using System.Runtime.InteropServices;
-
- using Microsoft.SingSharp;
- using Microsoft.Singularity;
- using Microsoft.Singularity.Channels;
-
- namespace Microsoft.Singularity.Io
- {
- #if BUG
- [CLSCompliant(false)]
- [StructLayout(LayoutKind.Explicit)]
- public pointerfree struct BITMAPFILEHEADER {
- [FieldOffset( 0)] public ushort bfType;
- [FieldOffset( 2)] public uint bfSize;
- [FieldOffset( 6)] public ushort bfReserved1;
- [FieldOffset( 8)] public ushort bfReserved2;
- [FieldOffset(10)] public int bfOffBits;
- #else
- [CLSCompliant(false)]
- [StructLayout(LayoutKind.Sequential, Pack=2)]
- public pointerfree struct BITMAPFILEHEADER {
- public ushort bfType;
- public uint bfSize;
- public ushort bfReserved1;
- public ushort bfReserved2;
- public int bfOffBits;
- #endif
-
- public static BITMAPFILEHEADER Read(byte[]! in ExHeap buffer,
- int offset, out int used)
- {
- if (buffer == null || offset < 0 ||
- offset + sizeof(BITMAPFILEHEADER) > buffer.Length) {
- unchecked {
- Tracing.Log(Tracing.Error,
- "BITMAPFILEHEADER Read(offset={0}, length={1})",
- (UIntPtr)(uint)offset,
- (UIntPtr)(uint)buffer.Length);
- }
- throw new OverflowException("Read source invalid.");
- }
-
- used = offset + /*sizeof(BITMAPFILEHEADER)*/ 14;
-
- ref BITMAPFILEHEADER bmfh = ref buffer[offset];
- return bmfh;
- }
- }
- } // namespace Microsoft.Singularity.Io