WsAsyncExecute 関数 (webservices.h)
非同期操作を実装するためのヘルパー関数。
構文
HRESULT WsAsyncExecute(
[in] WS_ASYNC_STATE *asyncState,
[in, optional] WS_ASYNC_FUNCTION operation,
[in] WS_CALLBACK_MODEL callbackModel,
[in] void *callbackState,
[in, optional] const WS_ASYNC_CONTEXT *asyncContext,
[in, optional] WS_ERROR *error
);
パラメーター
[in] asyncState
非同期操作中に使用される WS_ASYNC_STATE 構造体へのポインター。 これは、直接使用を目的とした状態メンテナンス パラメーターではありません。 アプリケーションは 、WS_ASYNC_STATE 構造体を割り当て、非同期操作全体の間も維持されるようにする必要があります。 WS_ASYNC_STATE構造体は、非同期操作の完了後に再利用できます。
[in, optional] operation
実行する初期非同期操作を表します。
[in] callbackModel
コールバックが long または short のどちらで呼び出されているかを示します。 詳細については、「WS_CALLBACK_MODEL」を参照してください。
[in] callbackState
各 WS_ASYNC_FUNCTIONに渡されるユーザー定義値への void ポインター。
[in, optional] asyncContext
関数を非同期的に呼び出すための情報へのポインター。 NULL を渡して関数を同期的に呼び出します。
[in, optional] error
関数が失敗した場合に追加のエラー情報を受け取る WS_ERROR 構造体へのポインター。
戻り値
関数が成功すると、NO_ERRORが返されます。それ以外の場合は、HRESULT エラー コードが返されます。
解説
WWSAPI が非同期操作を処理する方法の詳細については、「 非同期モデル 」トピックを参照してください。
多くの場合、非同期操作は他の非同期操作で構成されます。 各非同期操作は、コールバックが呼び出されることを示すWS_S_ASYNC、またはその他の成功または失敗コードを返す場合があります。その場合、コールバックは呼び出されません。 呼び出し元が操作の同期的な実行を要求していることを示す NULL WS_ASYNC_CONTEXTを受け入れるように、操作を準備する必要があります。 また、コールバックが適切に呼び出されるようにする必要もあります。 複雑な非同期操作では、 WsAsyncExecute によってこれらの詳細が簡略化されます。
WsAsyncExecute は、非同期操作を開始し、非同期操作が完了したときに呼び出される関数を示すユーザー定義コールバックを呼び出すことによって動作します。 このシーケンスは、コールバックが呼び出す別の関数を設定しないまで続行されます。 この時点で、いずれかの操作が非同期的に完了した場合、WS_ASYNC_CONTEXTによって指定されたコールバックが呼び出されます。
WS_ASYNC_STATE パラメーターは、WsAsyncExecute によってその状態を維持するために使用され、呼び出し元による初期化、検査、または使用を意図したものではありません。 ただし、呼び出し元は 、WS_ASYNC_STATE を割り当て、非同期操作全体で確実に有効にしておく必要があります。 非同期操作が完了すると、 WS_ASYNC_STATE を再利用できます。
AsyncAdd3ExplicitExample と AsyncAdd3ImplicitExample の例は、WsAsyncExecute を使用して同じ非同期関数を手動で実装する方法を示しています。
要件
サポートされている最小のクライアント | Windows 7 [デスクトップ アプリ |UWP アプリ] |
サポートされている最小のサーバー | Windows Server 2008 R2 [デスクトップ アプリ |UWP アプリ] |
対象プラットフォーム | Windows |
ヘッダー | webservices.h |
Library | WebServices.lib |
[DLL] | WebServices.dll |