31 lines
1016 B
Rust
31 lines
1016 B
Rust
use std::alloc::LayoutError;
|
|
|
|
use thiserror::Error;
|
|
use object::Error as ObjectError;
|
|
use windows::core::Error as WindowsError;
|
|
#[derive(Error, Debug)]
|
|
pub enum LoadPEError {
|
|
#[error("文件不存在: {0}")]
|
|
FileNotFound(String),
|
|
#[error("文件读取失败: {0}")]
|
|
FileReadError(#[from] std::io::Error),
|
|
#[error("文件解析失败: {0}")]
|
|
ParseError(#[from] ObjectError),
|
|
#[error("内存分配失败")]
|
|
MemoryAllocFailed,
|
|
|
|
#[error("可执行程序没有包含导入表!")]
|
|
ExecutableWithoutImportTable,
|
|
#[error("读取一个C风格字符串错误, {0}")]
|
|
ReadCStringError(#[from] std::str::Utf8Error),
|
|
#[error("LoadLibraryA错误!, {0}")]
|
|
LoadLibraryError(#[from] WindowsError),
|
|
#[error("GetProcAddress错误!, {0}")]
|
|
GetProcAddressError(String),
|
|
#[error("没有重定位表!")]
|
|
NoRelocationTable,
|
|
#[error(transparent)]
|
|
LayoutError(#[from] LayoutError),
|
|
#[error("更改内存属性失败!")]
|
|
ChangeMemoryProtectFailed,
|
|
} |