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_RECEIVE_OPTIONAL_MESSAGE が指定されており、チャネルで使用できるメッセージがこれ以上ありません。 |
|
受信したメッセージにエラーが含まれていました。 エラーは、WsGetErrorProperty を使用してWS_ERRORから抽出できます。 |
|
操作が中止されました。 |
|
オブジェクトの現在の状態のため、操作は許可されません。 |
|
リモート エンドポイントが存在しないか、見つかりませんでした。 |
|
リモート エンドポイントによってアクセスが拒否されました。 |
|
リモート エンドポイントとの接続が終了しました。 |
|
リモート エンドポイントで要求を処理できませんでした。 |
|
リモート エンドポイントは現在、この場所でサービスを提供していません。 |
|
オーバーロードされているため、リモート エンドポイントで要求を処理できません。 |
|
リモート エンドポイントに到達できませんでした。 |
|
エンドポイント アドレス URL が無効です。 |
|
入力データが予期された形式でなかったか、予期された値を持っていませんでした。 |
|
割り当てられた時間内に操作が完了しませんでした。 |
|
HTTP プロキシ サーバーによってアクセスが拒否されました。 |
|
HTTP プロキシ サーバーが要求を処理できませんでした。 |
|
クォータを超えました。 |
|
受信したデータのセキュリティ検証が成功しなかった。 |
|
Windows Web Services フレームワークでセキュリティ操作が失敗しました。 |
|
セキュリティ トークンの有効期限が切れたため、サーバーによって拒否されました。 |
|
HTTP プロキシ サーバーには、HTTP 認証スキーム 'basic' が必要です。 |
|
HTTP プロキシ サーバーには、HTTP 認証スキーム 'digest' が必要です。 |
|
HTTP プロキシ サーバーには、HTTP 認証スキーム 'negotiate' が必要です。 |
|
HTTP プロキシ サーバーには、HTTP 認証スキーム 'NTLM' が必要です。 |
|
リモート エンドポイントには HTTP 認証スキーム 'basic' が必要です。 |
|
リモート エンドポイントには HTTP 認証スキーム 'digest' が必要です。 |
|
リモート エンドポイントには、HTTP 認証スキーム 'negotiate' が必要です。 |
|
リモート エンドポイントには HTTP 認証スキーム 'NTLM' が必要です。 |
|
署名されたファイル内の現在のシステム クロックまたはタイムスタンプに対して検証するときに、必要な証明書がその有効期間内にありません。 |
|
証明書の CN 名が、渡された値と一致しません。 |
|
証明書チェーンは処理されましたが、信頼プロバイダーによって信頼されていないルート証明書で終了しました。 |
|
証明書が要求された使用法に対して無効である。 |
|
失効サーバーがオフラインであったため、失効関数が失効を確認できませんでした。 |
|
メモリが不足しました。 |
|
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 |