WsReceiveMessage 関数 (webservices.h)

メッセージを受信し、メッセージの本文を値として逆シリアル化します。

構文

HRESULT WsReceiveMessage(
  [in]           WS_CHANNEL                   *channel,
  [in]           WS_MESSAGE                   *message,
                 const WS_MESSAGE_DESCRIPTION **messageDescriptions,
  [in]           ULONG                        messageDescriptionCount,
  [in]           WS_RECEIVE_OPTION            receiveOption,
  [in]           WS_READ_OPTION               readBodyOption,
  [in, optional] WS_HEAP                      *heap,
                 void                         *value,
  [in]           ULONG                        valueSize,
                 ULONG                        *index,
  [in, optional] const WS_ASYNC_CONTEXT       *asyncContext,
  [in, optional] WS_ERROR                     *error
);

パラメーター

[in] channel

受信元のチャネル。

[in] message

受信に使用されるメッセージ オブジェクト。

メッセージは WS_MESSAGE_STATE_EMPTY 状態である必要があります。

messageDescriptions

予期される種類のメッセージのメタデータを指定するメッセージ記述へのポインターの配列。

[in] messageDescriptionCount

messageDescriptions 配列内の項目数。

[in] receiveOption

メッセージが必要かどうか。 詳細については、「 WS_RECEIVE_OPTION 」を参照してください。

[in] readBodyOption

body 要素が必要かどうか、および値を割り当てる方法。
詳細については、「 WS_READ_OPTION 」を参照してください。

[in, optional] heap

逆シリアル化された値を格納するヒープ。 指定した型にヒープが必要ない場合、このパラメーターは NULL にすることができます。

value

このパラメーターの解釈は 、WS_READ_OPTIONによって異なります。

receiveOption パラメーターにWS_RECEIVE_OPTIONAL_MESSAGEを指定し、チャネルでこれ以上メッセージを使用できない場合、このパラメーターはタッチされません。 この場合、関数は WS_S_END を返します。 ( 「Windows Web サービスの戻り値」を参照してください)。

一致した WS_MESSAGE_DESCRIPTION の bodyElementDescription が NULL の場合、このパラメーターはタッチされません。 この場合、 パラメーターを指定する必要はありません。

[in] valueSize

このパラメーターの解釈は 、WS_READ_OPTIONによって異なります。

index

receiveOption パラメーターにWS_RECEIVE_OPTIONAL_MESSAGEを指定し、チャネルでこれ以上メッセージを使用できない場合、このパラメーターは変更されません。 この場合、関数は WS_S_ENDを返します。

それ以外の場合、関数が成功した場合、どちらが一致するかを示すメッセージ記述の配列に 0 から始まるインデックスが含まれます。

呼び出し元が値に関心がない場合 (たとえば、メッセージの説明が 1 つしかない場合)、このパラメーターは NULL になります。

[in, optional] asyncContext

関数を非同期で呼び出す方法に関する情報。同期的に呼び出す場合は NULL

[in, optional] error

関数が失敗した場合に追加のエラー情報を格納する場所を指定します。

戻り値

この関数は、これらの値のいずれかを返すことができます。

リターン コード 説明
WS_S_ASYNC
非同期操作はまだ保留中です。
WS_S_END
受信オプション WS_RECEIVE_OPTIONAL_MESSAGE が指定されており、チャネルで使用できるメッセージがこれ以上ありません。
WS_E_ENDPOINT_FAULT_RECEIVED
受信したメッセージにエラーが含まれていました。 エラーは、WsGetErrorProperty を使用してWS_ERRORから抽出できます。
WS_E_OPERATION_ABORTED
操作が中止されました。
WS_E_INVALID_OPERATION
オブジェクトの現在の状態のため、操作は許可されません。
WS_E_ENDPOINT_NOT_FOUND
リモート エンドポイントが存在しないか、見つかりませんでした。
WS_E_ENDPOINT_ACCESS_DENIED
リモート エンドポイントによってアクセスが拒否されました。
WS_E_ENDPOINT_DISCONNECTED
リモート エンドポイントとの接続が終了しました。
WS_E_ENDPOINT_FAILURE
リモート エンドポイントで要求を処理できませんでした。
WS_E_ENDPOINT_NOT_AVAILABLE
リモート エンドポイントは現在、この場所でサービスを提供していません。
WS_E_ENDPOINT_TOO_BUSY
オーバーロードされているため、リモート エンドポイントで要求を処理できません。
WS_E_ENDPOINT_UNREACHABLE
リモート エンドポイントに到達できませんでした。
WS_E_INVALID_ENDPOINT_URL
エンドポイント アドレス URL が無効です。
WS_E_INVALID_FORMAT
入力データが予期された形式でなかったか、予期された値を持っていませんでした。
WS_E_OPERATION_TIMED_OUT
割り当てられた時間内に操作が完了しませんでした。
WS_E_PROXY_ACCESS_DENIED
HTTP プロキシ サーバーによってアクセスが拒否されました。
WS_E_PROXY_FAILURE
HTTP プロキシ サーバーが要求を処理できませんでした。
WS_E_QUOTA_EXCEEDED
クォータを超えました。
WS_E_SECURITY_VERIFICATION_FAILURE
受信したデータのセキュリティ検証が成功しなかった。
WS_E_SECURITY_SYSTEM_FAILURE
Windows Web Services フレームワークでセキュリティ操作が失敗しました。
WS_E_SECURITY_TOKEN_EXPIRED
セキュリティ トークンの有効期限が切れたため、サーバーによって拒否されました。
WS_E_PROXY_REQUIRES_BASIC_AUTH
HTTP プロキシ サーバーには、HTTP 認証スキーム 'basic' が必要です。
WS_E_PROXY_REQUIRES_DIGEST_AUTH
HTTP プロキシ サーバーには、HTTP 認証スキーム 'digest' が必要です。
WS_E_PROXY_REQUIRES_NEGOTIATE_AUTH
HTTP プロキシ サーバーには、HTTP 認証スキーム 'negotiate' が必要です。
WS_E_PROXY_REQUIRES_NTLM_AUTH
HTTP プロキシ サーバーには、HTTP 認証スキーム 'NTLM' が必要です。
WS_E_SERVER_REQUIRES_BASIC_AUTH
リモート エンドポイントには HTTP 認証スキーム 'basic' が必要です。
WS_E_SERVER_REQUIRES_DIGEST_AUTH
リモート エンドポイントには HTTP 認証スキーム 'digest' が必要です。
WS_E_SERVER_REQUIRES_NEGOTIATE_AUTH
リモート エンドポイントには、HTTP 認証スキーム 'negotiate' が必要です。
WS_E_SERVER_REQUIRES_NTLM_AUTH
リモート エンドポイントには HTTP 認証スキーム 'NTLM' が必要です。
CERT_E_EXPIRED
署名されたファイル内の現在のシステム クロックまたはタイムスタンプに対して検証するときに、必要な証明書がその有効期間内にありません。
CERT_E_CN_NO_MATCH
証明書の CN 名が、渡された値と一致しません。
CERT_E_UNTRUSTEDROOT
証明書チェーンは処理されましたが、信頼プロバイダーによって信頼されていないルート証明書で終了しました。
CERT_E_WRONG_USAGE
証明書が要求された使用法に対して無効である。
CRYPT_E_REVOCATION_OFFLINE
失効サーバーがオフラインであったため、失効関数が失効を確認できませんでした。
E_OUTOFMEMORY
メモリが不足しました。
E_INVALIDARG
1 つ以上の引数が無効です。
その他のエラー
この関数は、上記以外のエラーを返す場合があります。

注釈

この関数は、本文を逆シリアル化するために、予期されるメッセージの種類に関するメタデータを使用します。
メタデータは、 WS_MESSAGE_DESCRIPTIONへのポインターの配列です。 各メッセージの説明には、メッセージのアクションと照合するために使用されるアクション値と、body 要素のメタデータを提供する WS_ELEMENT_DESCRIPTION が含まれています。

メッセージ ヘッダーが受信されると、関数は配列をスキャンして、アクションに対する一致を見つけます。 一致する最初のメッセージ記述を使用して本文を逆シリアル化し、配列内のこのメッセージ記述の 0 から始まるインデックスが index out パラメーターで返されます。 関数が成功した場合、index out パラメーターは常に、使用されたメッセージ記述を示すように設定されます。

メッセージの説明が一致するためには、アクション値がメッセージの値と正確に一致している必要があります。 WS_MESSAGE_DESCRIPTIONのアクションが NULL の場合、アクションは常に一致します。 これは、受信したメッセージにアクション ヘッダーがない場合、またはアクションが何であっても本文が常に同じである場合に使用できます。

本文が空であることが予想される場合、 WS_MESSAGE_DESCRIPTION の bodyElementDescription フィールドは NULL になる可能性があります。

bodyElementDescription が NULL 以外の場合、この関数は WsReadBody で説明されているように本体を逆シリアル化します。

メッセージを受信した後、そのヘッダーは WsGetHeader または WsGetCustomHeader を使用して検査できます。

要件

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