How nickdu088/sharpext4 works
SharpExt4 is a .NET/Windows library for accessing ext2/3/4 filesystems on disk images and physical drives. The documented workflow opens a disk, selects a partition, mounts it as a filesystem, then performs file operations such as reading, writing, listing, and changing modes. The architecture combines a C++/CLI wrapper, raw-device access, partition parsing, and the lwext4 C filesystem. The README establishes the user workflow; many internal lwext4 calls are not shown in the excerpts, so uncertain implementation links are omitted or marked dashed.
Main entry points: ext4.c Filesystem operations · ExtFileSystem.cpp Filesystem API · ExtDisk.cpp Disk access · io_raw.cpp Raw device I/O
Components 16
Disk and partitions
- Disk access
SharpExt4/ExtDisk.cpp - Partition discovery
DiskPartitionInfo
.NET wrapper
- Filesystem API
SharpExt4/ExtFileSystem.cpp - File stream
SharpExt4/ExtFileStream.cpp - Directory entries
SharpExt4/ExtDirEntry.cpp
Filesystem engine
- Filesystem operations
lwext4/src/ext4.c - Mount and metadata
lwext4/src/ext4_fs.c - Directory operations
lwext4/src/ext4_dir.c - Inode allocation
lwext4/src/ext4_inode.c - Extent mapping
lwext4/src/ext4_extent.c - Journal recovery
lwext4/src/ext4_journal.c - Extended attributes
lwext4/src/ext4_xattr.c - Filesystem creation
lwext4/src/ext4_mkfs.c
Block storage
- Raw device I/O
SharpExt4/io_raw.cpp - Block device layer
lwext4/src/ext4_blockdev.c
Other components
- .NET application
Connections 16
- .NET application → Disk access: opens disk
- Disk access → Partition discovery: exposes partitions
- .NET application → Filesystem API: opens partition
- Filesystem API → File stream: opens files
- .NET application → Filesystem API: lists and modifies
- Disk access → Raw device I/O: uses device I/O
SharpExt4/ExtDisk.cpp - Filesystem API → Raw device I/O: configures device
SharpExt4/ExtFileSystem.cpp - Filesystem API → Filesystem operations: calls filesystem API
SharpExt4/ExtFileSystem.cpp - Raw device I/O → Block device layer: implements device callbacks
- Filesystem operations → Mount and metadata: uses filesystem services
- Filesystem operations → Directory operations: uses directory operations
- Filesystem operations → Inode allocation: uses inode operations
- Filesystem operations → Extent mapping: uses extent mapping
- Filesystem operations → Journal recovery: uses journal
- Filesystem operations → Extended attributes: uses attributes
- Filesystem creation → Block device layer: writes filesystem