Если производится асинхронная операция, RadFile/WriteFile вернут FALSE с кодом ошибки "операция не завершена". После этого надо будить поток эвентом, хэндл которого передан в оверлаппед-структуру. Только когда это событие произойдёт, данные в буфере будут готовы. Количество поступивших данных можно узнать используя GetOverlappedResult(...) или непосредственно потроша кишки оверлаппед-структуры. я проверял - это так работает от WIN98 - W7-x86. 64-ю не проверял.
Если на других версиях ты успешно работаешь иначе, значит тебе до сих пор везло.