use gaia_binary::{LittleEndian, ReadBytesExt};
use gaia_types::GaiaError;
use serde::{Deserialize, Serialize};
use std::io::{Read, Seek, SeekFrom};
#[derive(Copy, Clone, Debug, Serialize, Deserialize)]
pub struct NtHeader {
pub signature: u32,
}
impl NtHeader {
pub fn read<R>(mut reader: R) -> Result<Self, GaiaError>
where
R: Read,
{
let signature = reader.read_u32::<LittleEndian>()?;
Ok(NtHeader { signature })
}
pub fn read_at<R, E>(mut reader: R, offset: u64) -> Result<Self, GaiaError>
where
R: Read + Seek,
{
reader.seek(SeekFrom::Start(offset))?;
Self::read(reader)
}
}
impl Default for NtHeader {
fn default() -> Self {
Self {
signature: 0x00004550,
}
}
}