InternetReadFile 関数 (wininet.h)
InternetOpenUrl、FtpOpenFile、または HttpOpenRequest 関数によって開かれたハンドルからデータを読み取ります。
構文
BOOL InternetReadFile(
[in] HINTERNET hFile,
[out] LPVOID lpBuffer,
[in] DWORD dwNumberOfBytesToRead,
[out] LPDWORD lpdwNumberOfBytesRead
);
パラメーター
[in] hFile
InternetOpenUrl、FtpOpenFile、または HttpOpenRequest の以前の呼び出しから返されたハンドル。
[out] lpBuffer
データを受信するバッファーへのポインター。
[in] dwNumberOfBytesToRead
読み取るバイト数。
[out] lpdwNumberOfBytesRead
読み取られたバイト数を受け取る変数へのポインター。 InternetReadFile は 、作業またはエラー チェックを行う前に、この値を 0 に設定します。
戻り値
成功した場合は TRUE 、それ以外の場合 は FALSE を 返します。 詳細なエラー情報を得るには、GetLastError を呼び出します。 アプリケーションでは、必要に応じて InternetGetLastResponseInfo を使用することもできます。
注釈
InternetReadFile は 、いくつかの例外を除いて、基本 の ReadFile 関数とほぼ同じように動作します。 通常、 InternetReadFile は 、バイトのシーケンシャル ストリームとして HINTERNET ハンドルからデータを取得します。 InternetReadFile の呼び出しごとに読み取るデータの量は dwNumberOfBytesToRead パラメーターで指定され、データは lpBuffer パラメーターで返されます。 通常の読み取りでは、ファイルの末尾に達するまで、InternetReadFile の呼び出しごとに指定された dwNumberOfBytesToRead を取得します。 すべてのデータが確実に取得されるようにするには、アプリケーションは、関数が TRUE を返し、lpdwNumberOfBytesRead パラメーターが 0 になるまで InternetReadFile 関数を呼び出し続ける必要があります。 これは、要求されたデータがキャッシュに書き込まれる場合に特に重要です。そうしないと、キャッシュが正しく更新されず、ダウンロードしたファイルがキャッシュにコミットされないためです。 データ ストリームを開く元の要求が INTERNET_FLAG_NO_CACHE_WRITE フラグを設定しない限り、キャッシュは自動的に行われることに注意してください。
アプリケーションが InternetOpenUrl を使用してハンドルを取得すると、WinINet は、アプリケーションのインターネットからの読み取りを容易にするために、すべてのデータをファイルのダウンロードのように見せようとします。 FTP ファイル ディレクトリの一覧など、一部の種類の情報では、 によって返されるデータが変換されます。
InternetReadFile から HTML ストリームへ。 これは行ごとに行われます。 たとえば、FTP ディレクトリリストを HTML 行に変換し、この HTML をアプリケーションに返すことができます。
WinINet は、 HTML を lpBuffer バッファーに一度に 1 行ずつ書き込もうとします。 アプリケーションのバッファーが小さすぎて、生成された HTML の少なくとも 1 行に収まらない場合、エラー コード ERROR_INSUFFICIENT_BUFFER は、より大きなバッファーが必要であることをアプリケーションに示すために返されます。 また、変換された行がバッファーを完全に満たさない可能性があるため、 InternetReadFile は lpBuffer 内の要求よりも少ないデータを返すことができます。 後続の読み取りでは、変換されたすべての HTML が取得されます。 アプリケーションは、前に説明したように、すべてのデータが取得されることを再度チェックする必要があります。
WinINet API の他のすべての側面と同様に、この関数を DllMain またはグローバル オブジェクトのコンストラクターとデストラクター内から安全に呼び出すことはできません。
InternetReadFile を呼び出してもトランザクションが完了しない場合、非同期で実行すると、FALSE が返され、GetLastError の後続の呼び出しはERROR_IO_PENDINGを返します。 トランザクションが完了すると、 InternetSetStatusCallback の前回の呼び出しで指定された InternetStatusCallback が INTERNET_STATUS_REQUEST_COMPLETEで呼び出されます。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | wininet.h |
Library | Wininet.lib |
[DLL] | Wininet.dll |