Skip to main content

Module parse

Module parse 

Source
Expand description

Parallel chunk parsing (ADR-0011): record sub-ranges of one chunk fan out across rayon workers, each producing a ParsedBatch; the builder appends the batches in chunk order, so EntryId assignment is deterministic.

StructsΒ§

ParsedBatch πŸ”’
One worker’s output for a record sub-range, in record order.
ParsedMeta πŸ”’
One entry parsed by a worker; the name lives in its batch’s pools.
RecordArena πŸ”’
Fixed-size record store for the deferred/extension caches: records live back-to-back in one growable allocation, addressed by slot (ADR-0012).
RecordAttrs πŸ”’
$STANDARD_INFORMATION + $DATA extract shared by every parse path.

ConstantsΒ§

FILE_ATTRIBUTE_HIDDEN πŸ”’
FILE_ATTRIBUTE_REPARSE_POINT πŸ”’
FILE_ATTRIBUTE_SYSTEM πŸ”’
PARSE_SUB πŸ”’
Sub-range fed to one parse worker β€” small enough to spread a 16MiB chunk across cores, large enough to amortize the per-task overhead.

FunctionsΒ§

append_batches πŸ”’
extract_attrs πŸ”’
parse_chunk πŸ”’
Fan a chunk’s record sub-ranges across rayon workers. The returned batches are in sub-range order, so appending them sequentially yields the same EntryId assignment as a fully sequential parse.
parse_subrange πŸ”’
Validate, fix up and parse every record in bytes (a record-aligned slice whose first byte sits at first_logical in the $MFT stream). Mirrors the sequential loop exactly β€” same skip conditions, same counts.