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 
- }