Si queres imitar la funcion getline entonces depurala y aprende que es lo que hace para poder repetirlo.
ReadFile no lee todo un archivo sino la cantidad de bytes que se le pida, la forma mas simple y menos eficiente de lograr lo que queres es simplemente leer byte a byte hasta encontrar el terminador de linea (en Windows rn). Tambien podes cargar el archivo en memoria, si son archivos de texto normalmente no hay problema pero todo dependera del tamaño del archivo ... 4GB no es muy recomendable cargar en memoria.