Struct File
pub struct File {
pub rid: u32,
pub token: Token,
pub offset: usize,
pub flags: FileAttributes,
pub name: String,
pub hash_value: AssemblyRefHash,
pub custom_attributes: CustomAttributeValueList,
}Expand description
Represents a file definition with resolved references and owned data.
A file entry describes a component of a multi-file assembly, providing metadata about files that are part of the assembly but stored separately from the main manifest. This includes modules, resources, and native libraries.
§File Types
Files can serve various purposes in assemblies:
- Executable modules: .netmodule files with executable code
- Resource files: .resources files with binary data
- Native libraries: .dll files with unmanaged code
- Documentation: .xml files with API documentation
- Configuration: Data files with application settings
§File Attributes
The flags field indicates file characteristics:
CONTAINS_META_DATA: File contains .NET metadata (executable modules)CONTAINS_NO_META_DATA: Resource files without metadata
§Hash Verification
Each file includes a cryptographic hash for security:
- SHA-1 or SHA-256: Algorithm depends on assembly version
- Integrity checking: Verifies file hasn’t been tampered with
- Loading validation: Runtime can verify file authenticity
- Security assurance: Prevents malicious file substitution
§Assembly Integration
Files integrate with the broader assembly structure:
- Module loading: Executable files loaded by the CLR
- Resource access: Resource files accessed through APIs
- P/Invoke: Native libraries used for interop
- Documentation: Help files displayed in IDEs
§ECMA-335 Reference
See ECMA-335, Partition II, §22.19 for the complete File table specification.
Fields§
§rid: u32The row identifier in the File table.
This 1-based index uniquely identifies this file within the File table. Combined with the table type, it forms the file’s unique identity.
token: TokenThe metadata token for this file.
A crate::metadata::token::Token that uniquely identifies this file across the entire assembly.
The token encodes both the table type (File) and the row ID.
offset: usizeThe byte offset of this file in the metadata tables stream.
This offset points to the start of this file’s row data within the metadata tables stream, used for binary parsing and navigation.
flags: FileAttributesFile attribute flags indicating type and characteristics.
A 4-byte bitmask of FileAttributes values that specify the nature
of the file, particularly whether it contains .NET metadata or is a
resource file.
§Common Values
CONTAINS_META_DATA(0x0000): File contains .NET metadataCONTAINS_NO_META_DATA(0x0001): Resource file without metadata
name: StringThe name of the file.
The filename as it appears in the assembly manifest, resolved from the strings heap. This name is used to locate the file during assembly loading and verification.
hash_value: AssemblyRefHashCryptographic hash value for integrity verification.
An AssemblyRefHash containing the hash data used to verify the
file’s integrity. The hash algorithm (SHA-1 or SHA-256) depends on
the assembly version and security requirements.
custom_attributes: CustomAttributeValueListCustom attributes applied to this file.
A collection of custom attributes that provide additional metadata about the file, such as versioning information, descriptions, or security attributes.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for File
impl RefUnwindSafe for File
impl Send for File
impl Sync for File
impl Unpin for File
impl UnsafeUnpin for File
impl UnwindSafe for File
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> Downcast for T
impl<T> Downcast for T
impl<T> ErasedDestructor for Twhere
T: 'static,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
impl<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
fn into_sample(self) -> T
Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.