Estas usando mal la funcion InternetReadFile
BOOLAPI InternetReadFile(
HINTERNET hFile,
LPVOID lpBuffer,
DWORD dwNumberOfBytesToRead,
LPDWORD lpdwNumberOfBytesRead
);
ParámetroshFile: Identificador devuelto de una llamada anterior a InternetOpenUrl, FtpOpenFile o HttpOpenRequest.
lpBuffer: Puntero a un búfer que recibe los datos.
dwNumberOfBytesToRead: Número de bytes a leer.
lpdwNumberOfBytesRead: Puntero a una variable que recibe el número de bytes leídos. InternetReadFile establece este valor en cero antes de realizar cualquier trabajo o comprobación de errores.
Valor de retornoDevuelve TRUE si tiene éxito o FALSE de lo contrario. Para obtener información de error extendida, llame a GetLastError. Una aplicación también puede usar InternetGetLastResponseInfo cuando sea necesario.
En tu caso tienes varios errores en tus parametros:
1- Estas usando el parametro
lpBuffer como un char, cuando deberia ser un buffer o un array de chars, ej: char Buffer[MAX_BUFFER], o simplemente usar memoria dinamica
2- Estas usando el parametro
dwNumberOfBytesToRead con valor 1 (sizeof(char) == 1). Necesitas especificar una mayor cantidad de bytes a leer, como una constante ej: #define MAX_BUFFER 1024
3- Al final tu linea podria quedar algo como:
while (InternetReadFile(handle, Buffer, MAX_BUFFER, BytesRead) == TRUE && BytesRead > 0)
{
// tu codigo aqui
}