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

NdkGetConnectionData (NDK_FN_GET_CONNECTION_DATA) 関数は、読み取り制限値とピアによって送信されるプライベート データを取得します。

構文

NDK_FN_GET_CONNECTION_DATA NdkFnGetConnectionData;

NTSTATUS NdkFnGetConnectionData(
  [in]            NDK_CONNECTOR *pNdkConnector,
  [out, optional] ULONG *pInboundReadLimit,
  [out, optional] ULONG *pOutboundReadLimit,
                  PVOID pPrivateData,
                  ULONG *pPrivateDataLength
)
{...}

パラメーター

[in] pNdkConnector

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

[out, optional] pInboundReadLimit

この場所では、QP で許可する受信進行中の読み取り操作の最大数が返されます。

[out, optional] pOutboundReadLimit

この場所では、QP で許可する送信進行中の読み取り操作の最大数が返されます。

pPrivateData

返されるプライベート データへのポインター。

pPrivateDataLength

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

メモ 出力値は、バッファーに格納されているプライベート データの実際の長さを示すものではありません。 NDK コンシューマーは、実際のプライベート データの形式と長さをネゴシエートする必要があります。 プライベート データの詳細については、「解説」セクションを参照してください。
 

戻り値

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

リターン コード 説明
STATUS_SUCCESS
操作は正常に完了しました。
STATUS_BUFFER_TOO_SMALL
*pPrivateDataLength パラメーターの値は、接続プライベート データを保持するには小さすぎるバッファー サイズを指定しました。 *pPrivateDataLength は、必要なサイズで更新されます。
その他の状態コード
エラーが発生しました。

解説

NdkGetConnectionData 関数は、接続要求、受け入れ要求、拒否要求、および有効な受信および送信読み取り制限値を使用して、ピアによって送信されるプライベート データを取得します。 これらの値は、ローカル ピアとリモート ピアの要求された値とプロバイダーの最大制限から派生します。

プライベート データと、アクティブ側からの有効な受信読み取り制限 (IRD) 値と送信読み取り制限 (ORD) 値にアクセスするために、NDK コンシューマーは、NDK_FN_CONNECT_EVENT_CALLBACK関数に渡されたコネクタ オブジェクトに対して NdkGetConnectionData を呼び出すことができます。

パッシブ側からプライベート データと有効な IRD 値と ORD 値にアクセスするために、コンシューマーは、NDK_FN_CONNECTまたはNDK_FN_CONNECT_WITH_SHARED_ENDPOINTが正常に完了したコネクタ オブジェクトに対して NdkGetConnectionData を呼び出すことができます。NDK コンシューマーは、パッシブ側のNDK_FN_ACCEPT関数またはアクティブ側のNDK_FN_COMPLETE_CONNECT関数を呼び出した後、この関数を呼び出しません。

pPrivateData パラメーターが NULL で、*pPrivateDataLength が 0 の場合、NDK プロバイダーは STATUS_SUCCESSを返し、必要なプライベート データ バッファー サイズ (RDS) を *pPrivateDataLength に格納する必要があります。

メモ必要なプライベート データ バッファー サイズ (RDS) は、ピアがそれほど多くのプライベート データを送信したことを示すものではありません。 NDK コンシューマーは、受信側がプライベート データ バッファーにプライベート データがあるかどうかを判断できるようにする共通スキームを、両端に持っている必要があります。 RDS は接続ごとに異なる場合があります。
 
pPrivateData が NULL で、*pPrivateDataLength が 0 より大きい場合、これは無効な要求です。 コンシューマーはこれを行ってはいけません。

pPrivateData が NULL でない場合、プロバイダーは、バイト単位で *pPrivateDataLength または RDS の小さい方まで、pPrivateData のバッファーにプライベート データをコピーする必要があります。

*pPrivateDataLengthRDS 以上の場合、プロバイダーは STATUS_SUCCESSを返す必要があります。 それ以外の場合、プロバイダーはSTATUS_BUFFER_TOO_SMALLを返す必要があります。 どちらの場合も、プロバイダーは RDS を*pPrivateDataLength に格納してから、返す必要があります。

要件

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

こちらもご覧ください

NDK_CONNECTOR

NDK_CONNECTOR_DISPATCH