Win32 API 日本語リファレンス
ホーム › Networking.WinInet › LPINTERNET_STATUS_CALLBACK

LPINTERNET_STATUS_CALLBACK

コールバック

シグネチャ

void LPINTERNET_STATUS_CALLBACK(
    void* hInternet,
    UINT_PTR dwContext,
    DWORD dwInternetStatus,
    void* lpvStatusInformation,
    DWORD dwStatusInformationLength
);

パラメーター

フィールド型説明
hInternetvoid*コールバック関数が呼び出される対象のハンドルです。
dwContextUINT_PTRhInternet に関連付けられた、アプリケーション定義のコンテキスト値を指定する変数へのポインターです。
dwInternetStatusDWORD

コールバック関数が呼び出された理由を示すステータスコードです。このパラメーターには、次のいずれかの値を指定できます。

値 意味
INTERNET_STATUS_CLOSING_CONNECTION
サーバーへの接続を閉じています。 lpvStatusInformation パラメーターは NULL です。
INTERNET_STATUS_CONNECTED_TO_SERVER

lpvStatusInformation が指すソケットアドレス (SOCKADDR) への接続に成功しました。

INTERNET_STATUS_CONNECTING_TO_SERVER

lpvStatusInformation が指すソケットアドレス (SOCKADDR) に接続しています。

INTERNET_STATUS_CONNECTION_CLOSED
サーバーへの接続を正常に閉じました。 lpvStatusInformation パラメーターは NULL です。
INTERNET_STATUS_COOKIE_HISTORY
キャッシュからコンテンツを取得しています。Cookie が受け入れられたか、拒否されたか、ダウングレードされたか、リーシュされたかなど、その URL に関する過去の Cookie イベントのデータが含まれます。

lpvStatusInformation パラメーターは、InternetCookieHistory 構造体へのポインターです。

INTERNET_STATUS_COOKIE_RECEIVED
受け入れられた、拒否された、ダウングレードされた (永続的な Cookie からセッション Cookie に変更された)、またはリーシュされた (ファーストパーティのコンテキストでのみ送信される) Cookie の数を示します。 lpvStatusInformation パラメーターは、受信した Cookie の数を格納する DWORD です。
INTERNET_STATUS_COOKIE_SENT
要求の送信時に、送信または抑制された Cookie の数を示します。 lpvStatusInformation パラメーターは、送信または抑制された Cookie の数を格納する DWORD です。
INTERNET_STATUS_CTL_RESPONSE_RECEIVED
実装されていません。
INTERNET_STATUS_DETECTING_PROXY
プロキシが検出されたことをクライアントアプリケーションに通知します。
INTERNET_STATUS_HANDLE_CLOSING
このハンドル値は終了しました。pvStatusInformation には、閉じられるハンドルのアドレスが格納されます。lpvStatusInformation パラメーターには、閉じられるハンドルのアドレスが格納されます。
INTERNET_STATUS_HANDLE_CREATED

InternetConnect が新しいハンドルを作成したことを示すために使用されます。これにより、接続に時間がかかりすぎる場合、アプリケーションは別のスレッドから InternetCloseHandle を呼び出すことができます。 lpvStatusInformation パラメーターには、 HINTERNET ハンドルのアドレスが格納されます。

INTERNET_STATUS_INTERMEDIATE_RESPONSE
サーバーから中間 (100 番台) のステータスコードメッセージを受信しました。
INTERNET_STATUS_NAME_RESOLVED

lpvStatusInformation に格納された名前の IP アドレスが見つかりました。lpvStatusInformation パラメーターは、ホスト名を格納する PCTSTR を指します。

INTERNET_STATUS_P3P_HEADER
応答に P3P ヘッダーが含まれています。
INTERNET_STATUS_P3P_POLICYREF
実装されていません。
INTERNET_STATUS_PREFETCH
実装されていません。
INTERNET_STATUS_PRIVACY_IMPACTED
実装されていません。
INTERNET_STATUS_RECEIVING_RESPONSE
要求に対するサーバーの応答を待機しています。 lpvStatusInformation パラメーターは NULL です。
INTERNET_STATUS_REDIRECT
HTTP 要求が自動的にリダイレクトされようとしています。 lpvStatusInformation パラメーターは、新しい URL を指します。この時点で、アプリケーションはリダイレクト応答でサーバーから返されたデータを読み取り、応答ヘッダーを照会できます。また、ハンドルを閉じて操作を取り消すこともできます。元の要求で INTERNET_FLAG_NO_AUTO_REDIRECT が指定されていた場合、このコールバックは行われません。
INTERNET_STATUS_REQUEST_COMPLETE
非同期操作が完了しました。 lpvStatusInformation パラメーターには、 INTERNET_ASYNC_RESULT 構造体のアドレスが格納されます。
INTERNET_STATUS_REQUEST_SENT
情報要求をサーバーに正常に送信しました。 lpvStatusInformation パラメーターは、送信されたバイト数を格納する DWORD 値を指します。
INTERNET_STATUS_RESOLVING_NAME

lpvStatusInformation に格納された名前の IP アドレスを検索しています。lpvStatusInformation パラメーターは、ホスト名を格納する PCTSTR を指します。

INTERNET_STATUS_RESPONSE_RECEIVED
サーバーから応答を正常に受信しました。
INTERNET_STATUS_SENDING_REQUEST
情報要求をサーバーに送信しています。 lpvStatusInformation パラメーターは NULL です。
INTERNET_STATUS_STATE_CHANGE
セキュリティで保護された (HTTPS) サイトと保護されていない (HTTP) サイトの間を移動しました。この変更は必ずユーザーに通知する必要があります。通知しないと、ユーザーが意図せず機密情報を開示する危険があります。 このフラグが設定されている場合、lpvStatusInformation パラメーターは、追加のフラグを格納するステータス DWORD を指します。
lpvStatusInformationvoid*

追加のステータス情報へのポインターです。INTERNET_STATUS_STATE_CHANGE フラグが設定されている場合、lpvStatusInformation は、次のフラグの 1 つ以上を格納する DWORD を指します。

値 意味
INTERNET_STATE_CONNECTED
接続済みの状態です。切断状態とは排他的です。
INTERNET_STATE_DISCONNECTED
切断された状態です。ネットワーク接続を確立できませんでした。
INTERNET_STATE_DISCONNECTED_BY_USER
ユーザーの要求によって切断されました。
INTERNET_STATE_IDLE
Windows Internet によるネットワーク要求は行われていません。
INTERNET_STATE_BUSY
Windows Internet によってネットワーク要求が行われています。
INTERNET_STATUS_USER_INPUT_REQUIRED
要求を完了するには、ユーザーによる入力が必要です。
dwStatusInformationLengthDWORDlpvStatusInformation が指すデータのサイズ (バイト単位) です。

公式ドキュメント

アプリケーション定義のステータスコールバック関数のプロトタイプです。

INTERNET_STATUS_CALLBACK 型は、このコールバック関数へのポインターを定義します。InternetStatusCallback は、アプリケーション定義の関数名のプレースホルダーです。

解説(Remarks)

コールバックは要求の処理中に行われるため、ネットワークのデータスループットを低下させないよう、アプリケーションはコールバック関数内での処理時間を短く抑える必要があります。たとえば、コールバック関数内でダイアログボックスを表示すると、処理が長時間に及び、サーバーが要求を終了してしまうことがあります。

コールバック関数は、要求を開始したスレッドとは異なるスレッドコンテキストで呼び出されることがあります。

注意  意図しない情報の開示を防ぐため、セキュリティで保護された (HTTPS) サイトから保護されていない (HTTP) サイトへの状態変化が発生した場合は、必ずユーザーに通知してください。
 
WinINet API の他のすべての要素と同様に、この関数を DllMain 内やグローバルオブジェクトのコンストラクター/デストラクター内から安全に呼び出すことはできません。
メモ  WinINet はサーバー実装をサポートしていません。また、サービスから使用しないでください。サーバー実装やサービスでは、Microsoft Windows HTTP Services (WinHTTP) を使用してください。
 
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)