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.