The calculated size values were off by one for single layer DVDs, off by two for dual layer PTP DVDs, and just wrong for OTP DVDs. Usually the IOCTL_DISK_GET_LENGTH_INFO ioctl will have succeeded already.