INTERNET_STATUS_CALLBACK コールバック関数 (wininet.h)

アプリケーション定義の状態コールバック関数のプロトタイプ。

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

構文

INTERNET_STATUS_CALLBACK InternetStatusCallback;

VOID InternetStatusCallback(
  [in] HINTERNET hInternet,
  [in] DWORD_PTR dwContext,
  [in] DWORD dwInternetStatus,
  [in] LPVOID lpvStatusInformation,
  [in] DWORD dwStatusInformationLength
)
{...}

パラメーター

[in] hInternet

コールバック関数が呼び出されるハンドル。

[in] dwContext

hInternet に関連付けられているアプリケーション定義のコンテキスト値を指定する変数へのポインター。

[in] dwInternetStatus

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

値 意味
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 を指します。

[in] lpvStatusInformation

追加の状態情報へのポインター。 INTERNET_STATUS_STATE_CHANGE フラグが設定されると、lpvStatusInformation は、次のフラグの 1 つ以上を含む DWORD を指します。

値 意味
INTERNET_STATE_CONNECTED
接続状態。 切断された状態と相互に排他的です。
INTERNET_STATE_DISCONNECTED
切断状態。 ネットワーク接続を確立できませんでした。
INTERNET_STATE_DISCONNECTED_BY_USER
ユーザー要求によって切断されました。
INTERNET_STATE_IDLE
Windows インターネットによってネットワーク要求が行われていません。
INTERNET_STATE_BUSY
ネットワーク要求は Windows インターネットによって行われています。
INTERNET_STATUS_USER_INPUT_REQUIRED
要求では、ユーザー入力を完了する必要があります。

[in] dwStatusInformationLength

lpvStatusInformation が指すデータのサイズ (バイト単位)。

戻り値

なし

解説

コールバックは要求の処理中に行われるため、アプリケーションは、ネットワーク上のデータ スループットの低下を回避するために、コールバック関数にほとんど時間を費やさないようにする必要があります。 たとえば、コールバック関数にダイアログ ボックスを表示すると、サーバーが要求を終了するような長い操作になる可能性があります。

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

注意 非自発的な情報漏えいを防ぐために、セキュリティで保護された (HTTPS) サイトからセキュリティで保護されていない (HTTP) サイトに状態が変更されたときに、常にユーザーに通知します。
 
WinINet API の他のすべての側面と同様に、この関数を DllMain またはグローバル オブジェクトのコンストラクターとデストラクター内から安全に呼び出すことはできません。
メモ WinINet では、サーバーの実装はサポートされていません。 また、サービスから使用しないでください。 サーバーの実装またはサービスの場合は、 Microsoft Windows HTTP サービス (WinHTTP) を使用します。
 

要件

要件 値
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー wininet.h

こちらもご覧ください

非同期操作

状態コールバック関数の作成

INTERNET_ASYNC_RESULT

WinINet 関数