次の方法で共有


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_COMPLETE_CONNECT 関数で NDK_FN_ACCEPT 関数を呼び出した後、この関数を呼び出しません。をアクティブ側に置きます。

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

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

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

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

必要条件

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

関連項目

NDK_CONNECTOR

NDK_CONNECTOR_DISPATCH