pelite/wrap/file.rs
1use crate::*;
2use super::Wrap;
3
4/// Format agnostic PE file.
5pub type PeFile<'a> = Wrap<pe32::PeFile<'a>, pe64::PeFile<'a>>;
6
7impl<'a> PeFile<'a> {
8 /// Constructs a PeFile from byte slice.
9 pub fn from_bytes<T: AsRef<[u8]> + ?Sized>(image: &'a T) -> Result<PeFile<'a>> {
10 match pe64::PeFile::from_bytes(image) {
11 Ok(file) => Ok(Wrap::T64(file)),
12 Err(Error::PeMagic) => Ok(Wrap::T32(pe32::PeFile::from_bytes(image)?)),
13 Err(err) => Err(err),
14 }
15 }
16}