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 코드 중 하나를 반환합니다.
반환 코드 | 설명 |
---|---|
|
연결 요청이 성공적으로 완료되었습니다. |
|
작업이 보류 중이며 나중에 완료됩니다. 드라이버는 지정된 requestCompletion (NDK_FN_REQUEST_COMPLETION) 함수를 호출하여 보류 중인 작업을 완료합니다. |
|
리소스 부족으로 인해 요청이 실패했습니다.
중요 요청은 이 상태 코드와 비동기적으로도 인라인으로 실패할 수 있습니다.
|
|
원격 네트워크에 연결할 수 없어서 요청이 실패했습니다. 연결 시도를 다시 시도할 수 있습니다.
중요 요청은 이 상태 코드와 비동기적으로도 인라인으로 실패할 수 있습니다.
|
|
원격 호스트 시스템에 연결할 수 없어서 요청이 실패했습니다. 연결 시도를 다시 시도할 수 있습니다.
중요 요청은 이 상태 코드와 비동기적으로도 인라인으로 실패할 수 있습니다.
|
|
원격 시스템에서 연결 요청을 거부했기 때문에 요청이 실패했습니다. 이는 수신기 부족, 백로그 제한 또는 피어가 연결 요청을 적극적으로 거부하기 때문일 수 있습니다. 연결 시도를 다시 시도할 수 있습니다.
중요 요청은 이 상태 코드와 비동기적으로도 인라인으로 실패할 수 있습니다.
|
|
연결 요청 시간이 초과되어 요청이 실패했습니다. 연결 시도를 다시 시도할 수 있습니다. 시간 제한 값은 네트워크 직접 공급자가 해당 네트워크 특성과 일치하도록 선택됩니다.
중요 요청은 이 상태 코드와 비동기적으로도 인라인으로 실패할 수 있습니다.
|
|
지정된 로컬 주소가 이미 사용 중이므로 요청이 실패했습니다.
중요 요청은 이 상태 코드와 비동기적으로도 인라인으로 실패할 수 있습니다.
|
|
지정된 로컬 주소가 어댑터의 유효한 주소가 아니므로 요청이 실패했습니다.
중요 요청은 이 상태 코드와 비동기적으로도 인라인으로 실패할 수 있습니다.
|
|
소비자가 로컬 포트 번호를 0으로 지정하고 네트워크 직접 공급자가 임시 포트 공간(포트 49152-65535)에서 포트를 할당할 수 없기 때문에 요청이 실패했습니다.
중요 요청은 이 상태 코드와 비동기적으로도 인라인으로 실패할 수 있습니다.
|
|
로컬 주소, 로컬 포트, 원격 주소 및 원격 포트의 조합이 있는 연결이 이미 있으므로 요청이 실패했습니다.
중요 요청은 이 상태 코드와 비동기적으로도 인라인으로 실패할 수 있습니다.
|
|
오류가 발생했습니다. |
설명
NdkConnect 는 로컬 주소에서 원격 주소로의 연결 요청을 시작합니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | 지원되지 않음, NDIS 6.30 이상에서 지원됨 |
지원되는 최소 서버 | Windows Server 2012 |
대상 플랫폼 | Windows |
헤더 | ndkpi.h(Ndkpi.h 포함) |
IRQL | <=DISPATCH_LEVEL |