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이 아닌 경우 공급자는 pPrivateData의 버퍼에 프라이빗 데이터를 *pPrivateDataLength 또는 RDS(바이트)까지 복사해야 합니다.

*pPrivateDataLengthRDS보다 크거나 같으면 공급자는 STATUS_SUCCESS 반환해야 합니다. 그렇지 않으면 공급자가 STATUS_BUFFER_TOO_SMALL 반환해야 합니다. 두 경우 모두 공급자는 반환하기 전에 *pPrivateDataLengthRDS를 저장해야 합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 지원되지 않음, NDIS 6.30 이상에서 지원됨
지원되는 최소 서버 Windows Server 2012
대상 플랫폼 Windows
헤더 ndkpi.h(Ndkpi.h 포함)
IRQL <=DISPATCH_LEVEL

추가 정보

NDK_CONNECTOR

NDK_CONNECTOR_DISPATCH