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

NdkConnect (NDK_FN_CONNECT) 関数は、NDK 接続要求を開始します。

構文

NDK_FN_CONNECT NdkFnConnect;

NTSTATUS NdkFnConnect(
  [in]                                      NDK_CONNECTOR *pNdkConnector,
  [in]                                      NDK_QP *pNdkQp,
                                            const PSOCKADDR pSrcAddress,
  [in]                                      ULONG SrcAddressLength,
  [in]                                      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) へのポインター。

pSrcAddress

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

[in] SrcAddressLength

pSrcAddress パラメーターのソース アドレス データのサイズ (バイト単位)。

[in] 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 パラメーターに渡すコンテキスト値。

戻り値

NdkConnect 関数は、次の 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_SHARING_VIOLATION
指定されたローカル アドレスが既に使用されているため、要求は失敗しました。
大事な 要求はインラインで失敗し、この状態コードを使用して非同期的に失敗する可能性があります。
 
STATUS_INVALID_ADDRESS
指定したローカル アドレスがアダプターの有効なアドレスでないため、要求は失敗しました。
大事な 要求はインラインで失敗し、この状態コードを使用して非同期的に失敗する可能性があります。
 
STATUS_TOO_MANY_ADDRESSES
コンシューマーがローカル ポート番号 0 を指定し、ネットワーク ダイレクト プロバイダーがエフェメラル ポート空間 (ポート 49152 から 65535) からポートを割り当てられなかったため、要求は失敗しました。
大事な 要求はインラインで失敗し、この状態コードを使用して非同期的に失敗する可能性があります。
 
STATUS_ADDRESS_ALREADY_EXISTS
ローカル アドレス、ローカル ポート、リモート アドレス、リモート ポートを組み合わせた接続が既に存在するため、要求は失敗しました。
大事な 要求はインラインで失敗し、この状態コードを使用して非同期的に失敗する可能性があります。
 
その他の状態コード
エラーが発生しました。

解説

NdkConnect は、ローカル アドレスからリモート アドレスへの接続要求を開始します。

要件

要件
サポートされている最小のクライアント サポートされていません。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_DISCONNECT

NDK_FN_GET_CONNECTION_DATA

NDK_FN_REQUEST_COMPLETION

NDK_QP