次の方法で共有


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 を再利用できます。

AsyncAdd3ExplicitExampleAsyncAdd3ImplicitExample の例は、WsAsyncExecute を使用して同じ非同期関数を手動で実装する方法を示しています。

要件

   
サポートされている最小のクライアント Windows 7 [デスクトップ アプリ |UWP アプリ]
サポートされている最小のサーバー Windows Server 2008 R2 [デスクトップ アプリ |UWP アプリ]
対象プラットフォーム Windows
ヘッダー webservices.h
Library WebServices.lib
[DLL] WebServices.dll