Compartir a través de


Función InternetReadFile (wininet.h)

Lee datos de un identificador abierto por la función InternetOpenUrl, FtpOpenFile o HttpOpenRequest .

Sintaxis

BOOL InternetReadFile(
  [in]  HINTERNET hFile,
  [out] LPVOID    lpBuffer,
  [in]  DWORD     dwNumberOfBytesToRead,
  [out] LPDWORD   lpdwNumberOfBytesRead
);

Parámetros

[in] hFile

Identificador devuelto desde una llamada anterior a InternetOpenUrl, FtpOpenFile o HttpOpenRequest.

[out] lpBuffer

Puntero a un búfer que recibe los datos.

[in] dwNumberOfBytesToRead

Número de bytes que se van a leer.

[out] lpdwNumberOfBytesRead

Puntero a una variable que recibe el número de bytes leídos. InternetReadFile establece este valor en cero antes de realizar cualquier comprobación de errores o trabajo.

Valor devuelto

Devuelve TRUE si se ejecuta correctamente 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.

Comentarios

InternetReadFile funciona de forma muy similar a la función ReadFile base, con algunas excepciones. Normalmente, InternetReadFile recupera datos de un identificador HINTERNET como un flujo secuencial de bytes. El parámetro dwNumberOfBytesToRead especifica la cantidad de datos que se van a leer para cada llamada a InternetRead y los datos se devuelven en el parámetro lpBuffer. Una lectura normal recupera el dwNumberOfBytesToRead especificado para cada llamada a InternetReadFile hasta el final del archivo. Para asegurarse de que se recuperan todos los datos, una aplicación debe seguir llamando a la función InternetReadFile hasta que la función devuelva TRUE y el parámetro lpdwNumberOfBytesRead sea igual a cero. Esto es especialmente importante si los datos solicitados se escriben en la memoria caché, ya que de lo contrario, la memoria caché no se actualizará correctamente y el archivo descargado no se confirmará en la memoria caché. Tenga en cuenta que el almacenamiento en caché se produce automáticamente a menos que la solicitud original abra el flujo de datos establezca la marca INTERNET_FLAG_NO_CACHE_WRITE .

Cuando una aplicación recupera un identificador mediante InternetOpenUrl, WinINet intenta hacer que todos los datos parezcan una descarga de archivos, con el fin de facilitar la lectura desde Internet para la aplicación. Para algunos tipos de información, como listas de directorios de archivos FTP, convierte los datos que se van a devolver.
InternetReadFile en una secuencia HTML. Esto se hace de forma línea a línea. Por ejemplo, puede convertir una lista de directorios FTP en una línea de HTML y devolver este CÓDIGO HTML a la aplicación.

WinINet intenta escribir el CÓDIGO HTML en el búfer lpBuffer una línea a la vez. Si el búfer de la aplicación es demasiado pequeño para ajustarse al menos a una línea de HTML generado, el código de error ERROR_INSUFFICIENT_BUFFER se devuelve como indicación a la aplicación que necesita un búfer mayor. Además, es posible que las líneas convertidas no rellenen completamente el búfer, por lo que InternetReadFile puede devolver con menos datos en lpBuffer de lo solicitado. Las lecturas posteriores recuperarán todo el HTML convertido. La aplicación debe comprobar de nuevo que todos los datos se recuperan como se ha descrito anteriormente.

Al igual que todos los demás aspectos de la API de WinINet, esta función no se puede llamar de forma segura desde DllMain ni desde los constructores y destructores de objetos globales.

Cuando se ejecuta de forma asincrónica, si una llamada a InternetReadFile no da lugar a una transacción completada, devolverá FALSE y una llamada posterior a GetLastError devolverá ERROR_IO_PENDING. Una vez completada la transacción, se llamará a InternetStatusCallback especificada en una llamada anterior a InternetSetStatusCallback con INTERNET_STATUS_REQUEST_COMPLETE.

Nota WinINet no admite implementaciones de servidor. Además, no se debe usar desde un servicio. En el caso de las implementaciones de servidor o los servicios, use los servicios HTTP de Microsoft Windows (WinHTTP).
 

Requisitos

Requisito Value
Cliente mínimo compatible Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado wininet.h
Library Wininet.lib
Archivo DLL Wininet.dll

Consulte también

Funciones comunes

Funciones de WinINet