private void Open() { if (_opened) { return; } _fs = new FileStream(_file, FileMode.Open, FileAccess.Read, FileShare.Read); _index = 0; _pcapHeader = ReadPcapHeader(); _opened = true; }
//public static unsafe T ReadValue<T>(Stream stream) where T : struct //{ // int l = Marshal.SizeOf(typeof(T)); // byte[] data = new byte[l]; // stream.Read(data, 0, l); // fixed (byte* p = &data[0]) // { // return *(T*)p; // } //} public static unsafe bool ReadPcapHeader(Stream stream, out PcapHeader pcapHeader) { int l = sizeof(PcapHeader); byte[] data = new byte[l]; if (stream.Read(data, 0, l) != l) { pcapHeader = new PcapHeader(); return(false); } fixed(byte *p = &data[0]) { pcapHeader = *(PcapHeader *)p; return(true); } }