123456789101112131415161718192021222324252627282930313233343536 |
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Text;
- namespace NativeLibraryLoader.Linux
- {
- internal class ELFFileCheck : IFileCheck
- {
- public MachineType CheckFile(string path)
- {
- MachineType machineType = MachineType.NoSupport;
- var stream = System.IO.File.OpenRead(path);
- Byte[] bytes = new Byte[] { 0x7f, 0x45, 0x4c, 0x46 };
- if (bytes.All(x => stream.ReadByte() == x))
- {
- switch (stream.ReadByte())
- {
- case 1:
- machineType = MachineType.Bit32;
- break;
- case 2:
- machineType = MachineType.Bit64;
- break;
- default:
- machineType = MachineType.NoSupport;
- break;
- }
- }
- stream.Close();
- stream.Dispose();
- return machineType;
- }
- }
- }
|