rvv привет!
Я думаю проблема в том, что ovr разрушается до завершения операции чтения (которая идет асинхроно). Вообщем нужно вызвать CancelIo до ее разрушения. А т.к. она "автоматическая" переменная, то адресс старой и новой переменной может совпасть.
Люди работающие с OVERLAPPED операциями чтения-записи, подтвердите мое подозрение.