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