On a Win10 system, it took about a minute to register the contents of a 256MB CF card. CiderPress II was able to open the same card instantly.
The problem is the unnecessary use of ScanCapacity(), which was added for old versions of Windows (<= Win2K) that didn't support the DISK_GEOMETRY_EX call. It wasn't possible to determine the size of the physical media, so the scan function essentially does a binary search to find the last readable block.
The card / reader combo I'm using (an old Lexar card with a USB 3 "PixelFlash" card reader) stalls for a couple of seconds on every bad read. Once the card's size is detected, it works just fine, but the initial scan time is absurd.
Curiously, it does try to use the geometry call (_EX version first, older version if that fails) when gathering the list of available devices, but it falls back on the block probe when actually opening the device.
On a Win10 system, it took about a minute to register the contents of a 256MB CF card. CiderPress II was able to open the same card instantly.
The problem is the unnecessary use of ScanCapacity(), which was added for old versions of Windows (<= Win2K) that didn't support the
DISK_GEOMETRY_EXcall. It wasn't possible to determine the size of the physical media, so the scan function essentially does a binary search to find the last readable block.The card / reader combo I'm using (an old Lexar card with a USB 3 "PixelFlash" card reader) stalls for a couple of seconds on every bad read. Once the card's size is detected, it works just fine, but the initial scan time is absurd.
Curiously, it does try to use the geometry call (_EX version first, older version if that fails) when gathering the list of available devices, but it falls back on the block probe when actually opening the device.