次の方法で共有


NDK_FN_CONNECT_WITH_SHARED_ENDPOINT コールバック関数 (ndkpi.h)

NdkConnectWithSharedEndpoint (NDK_FN_CONNECT_WITH_SHARED_ENDPOINT) 関数は、共有ローカル アドレスからリモート アドレスへの NDK 接続要求を開始します。

構文

NDK_FN_CONNECT_WITH_SHARED_ENDPOINT NdkFnConnectWithSharedEndpoint;

NTSTATUS NdkFnConnectWithSharedEndpoint(
  [in]                                      NDK_CONNECTOR *pNdkConnector,
  [in]                                      NDK_QP *pNdkQp,
  [in]                                      NDK_SHARED_ENDPOINT *pNdkSharedEndpoint,
                                            const PSOCKADDR pDestAddress,
  [in]                                      ULONG DestAddressLength,
  [in]                                      ULONG InboundReadLimit,
  [in]                                      ULONG OutboundReadLimit,
  [_In_reads_bytes_opt_(PrivateDataLength)] const PVOID pPrivateData,
  [in]                                      ULONG PrivateDataLength,
  [in]                                      NDK_FN_REQUEST_COMPLETION RequestCompletion,
  [in, optional]                            PVOID RequestContext
)
{...}

パラメーター

[in] pNdkConnector

NDK コネクタ オブジェクト (NDK_CONNECTOR) へのポインター。

[in] pNdkQp

接続に関連付ける NDK キュー ペア (QP) オブジェクト (NDK_QP) へのポインター。

[in] pNdkSharedEndpoint

接続のローカル アドレスを決定する NDK 共有エンドポイント オブジェクト (NDK_SHARED_ENDPOINT) へのポインター。

pDestAddress

宛先アドレス。 AF_INETまたは AF_INET6 pDestAddress の場合は、宛先 IP アドレスと宛先 ND ポートです。

[in] DestAddressLength

pDestAddress. パラメーターの宛先アドレス データのサイズ (バイト単位)。

[in] InboundReadLimit

コンシューマーが指定した、QP で許可する受信進行中の読み取り操作の最大数。 基になるプロバイダーの NDK_ADAPTER_INFO 構造体の MaxInboundReadLimit 値が小さい場合、プロバイダーはコンシューマー提供の値をプロバイダーの最大値に制限します。 ピアの OutboundReadLimit 値が低い場合、プロバイダーはその値を有効な InboundReadLimit として使用します。 コンシューマーは、NdkGetConnectionData 関数 (NDK_FN_GET_CONNECTION_DATA) を呼び出すことによって、有効な InboundReadLimit を取得できます。

[in] OutboundReadLimit

コンシューマーが指定した、QP で許可する送信進行中の読み取り操作の最大数。 基になるプロバイダーの NDK_ADAPTER_INFO 構造体の MaxOutboundReadLimit 値が小さい場合、プロバイダーはコンシューマー提供の値をプロバイダーの最大値に制限します。 ピアの InboundReadLimit が低い場合、プロバイダーはその値を有効な OutboundReadLimit として使用します。 コンシューマーは、NdkGetConnectionData 関数 (NDK_FN_GET_CONNECTION_DATA) を呼び出すことによって、有効な OutboundReadLimit を取得できます。

[_In_reads_bytes_opt_(PrivateDataLength)] pPrivateData

接続要求と共に送信されるプライベート データへのポインター。

[in] PrivateDataLength

pPrivateData パラメーターで提供されるプライベート データの長さ (バイト単位)。

[in] RequestCompletion

要求完了コールバック ルーチン NdkRequestCompletion (NDK_FN_REQUEST_COMPLETION) へのポインター。

[in, optional] RequestContext

RequestCompletion パラメーターで指定されたコールバック関数の Context パラメーターに渡すコンテキスト値。

戻り値

NdkConnectWithSharedEndpoint 関数は、次のいずれかの NTSTATUS コードを返します。

リターン コード 説明
STATUS_SUCCESS
接続要求が正常に完了しました。
STATUS_PENDING
操作は保留中であり、後で完了します。 ドライバーは、指定した RequestCompletion (NDK_FN_REQUEST_COMPLETION) 関数を呼び出して、保留中の操作を完了します。
STATUS_INSUFFICIENT_RESOURCES
リソースが不足しているため、要求は失敗しました。
大事な 要求はインラインで失敗し、この状態コードを使用して非同期的に失敗する可能性があります。
 
STATUS_NETWORK_UNREACHABLE
リモート ネットワークに到達できなかったため、要求は失敗しました。 接続試行が再試行される場合があります。
大事な 要求はインラインで失敗し、この状態コードを使用して非同期的に失敗する可能性があります。
 
STATUS_HOST_UNREACHABLE
リモート システムに到達できなかったため、要求は失敗しました。 接続試行が再試行される場合があります。
大事な 要求はインラインで失敗し、この状態コードを使用して非同期的に失敗する可能性があります。
 
STATUS_CONNECTION_REFUSED
リモート システムが接続要求を拒否したため、要求は失敗しました。 これは、リスナー、バックログの制限、またはピアが接続要求をアクティブに拒否しているために発生する可能性があります。 接続試行が再試行される場合があります。
大事な 要求はインラインで失敗し、この状態コードを使用して非同期的に失敗する可能性があります。
 
STATUS_IO_TIMEOUT
接続要求がタイムアウトしたため、要求は失敗しました。接続試行が再試行される場合があります。 タイムアウト値は、それぞれのネットワーク特性に一致するようにネットワーク ダイレクト プロバイダーによって選択されます。
大事な 要求はインラインで失敗し、この状態コードを使用して非同期的に失敗する可能性があります。
 
STATUS_ADDRESS_ALREADY_EXISTS
ローカル アドレス、ローカル ポート、リモート アドレス、およびリモート ポートの組み合わせを持つ接続が既に存在するため、要求は失敗しました。
大事な 要求はインラインで失敗し、この状態コードを使用して非同期的に失敗する可能性があります。
 
その他の状態コード
エラーが発生しました。

解説

NdkConnectWithSharedEndpoint は、共有ローカル アドレスから特定のリモート アドレスへの接続要求を開始します。 NdkConnectWithSharedEndpoint を使用すると、NDK コンシューマーは、接続の宛先アドレスが異なる場合に、多くの発信接続に同じローカル アドレス (10.1.1.1:9999 など) を使用できます。

要件

要件
サポートされている最小のクライアント サポートされていません。NDIS 6.30 以降でサポートされています。
サポートされている最小のサーバー Windows Server 2012
対象プラットフォーム Windows
ヘッダー ndkpi.h (Ndkpi.h を含む)
IRQL <=DISPATCH_LEVEL

こちらもご覧ください

NDKPI オブジェクト有効期間要件

NDK_ADAPTER_INFO

NDK_CONNECTOR

NDK_CONNECTOR_DISPATCH

NDK_FN_GET_CONNECTION_DATA

NDK_FN_REQUEST_COMPLETION

NDK_QP

NDK_SHARED_ENDPOINT