CRITICAL FIX: Use Win32Api.ERROR_HANDLE_EOF (raw 38) instead of literal HRESULT 0x80070026. GetLastWin32Error() returns raw Win32 codes, not HRESULTs. This was causing EOF to never be detected, making the scan loop run forever on garbage data and return 0 records.
CRITICAL FIX: ERROR_HANDLE_EOF = 38 (raw Win32), not 0x80070026 (HRESULT). GetLastWin32Error returns raw codes. Rust windows-rs wraps as HRESULT which confused the original port.
IndexStore: Exact match to Rust — single drive_root string (not multi-drive), Name() and NameLower() arena accessors, Finalize() with sort_unstable_by_key behavior. Remove multi-drive DriveIdx/DriveRoots divergence.
SearchEngine: Exact match to Rust — use IndexStore.Name()/NameLower()/BuildPath() arena accessors, remove parallel/Spar optimization that diverged from Rust. Single-threaded matching identical to Rust behavior.
FIX CRITICAL BUG: Correct FSCTL hex constants. Was 0x900B03/0x900F44, correct is 0x900B3/0x900F4. This caused DeviceIoControl to return ERROR_INVALID_FUNCTION(1), making MFT scan return 0 records.