NDK_FN_SEND 콜백 함수(ndkpi.h)
NdkSend(NDK_FN_SEND) 함수는 NDK 큐 쌍(QP)에 보내기 요청을 게시합니다.
구문
NDK_FN_SEND NdkFnSend;
NTSTATUS NdkFnSend(
[in] NDK_QP *pNdkQp,
[in, optional] PVOID RequestContext,
const NDK_SGE *pSgl,
[in] ULONG nSge,
[in] ULONG Flags
)
{...}
매개 변수
[in] pNdkQp
NDK QP(큐 쌍) 개체(NDK_QP)에 대한 포인터입니다.
[in, optional] RequestContext
이 요청에 대한 NDK_RESULT 구조의 RequestContext 멤버에 반환할 컨텍스트 값입니다.
pSgl
보낼 데이터를 보유하는 버퍼를 나타내는 SGE 구조체(NDK_SGE) 배열입니다.
[in] nSge
pSgl 매개 변수에 지정된 배열의 SGE 구조체 수입니다.
[in] Flags
허용되는 작업을 지정하는 플래그의 비트 OR입니다. 지원되는 플래그는 다음과 같습니다.
값 | 의미 |
---|---|
|
이 요청을 성공적으로 완료해도 아웃바운드 완료 큐에서 완료 이벤트가 생성되지 않음을 나타냅니다. 그러나 실패한 요청은 완료 큐에서 이벤트를 생성합니다. |
|
하드웨어가 이 요청 처리를 시작하기 전에 모든 이전 읽기 요청을 완료해야 했음을 나타냅니다. |
|
피어에 대한 완료 큐가 알림을 생성한다는 것을 나타냅니다. NDK_OP_FLAG_SEND_AND_SOLICIT_EVENT 대한 자세한 내용은 설명 섹션을 참조하세요. |
|
SGE에서 참조하는 메모리를 인라인으로 전송해야 했음을 나타냅니다. 또한 NDK_SGE 항목의 MemoryRegionToken 값이 잘못되었을 수 있습니다. 인라인 요청은 SGE 목록의 항목 수를 큐 쌍을 만들 때 지정된 MaxInitiatorRequestSge 값으로 제한할 필요가 없습니다. 인라인으로 전송되는 메모리 양은 큐 쌍의 인라인 데이터 제한 내에 있어야 합니다. |
|
처리를 위해 하드웨어에 대한 요청을 나타내는 것을 연기할 수 있음을 NDK 공급자에게 나타냅니다. 이 플래그에 대한 자세한 내용은 NDKPI 지연 처리 체계를 참조하세요.
참고 이 플래그는 NDKPI 1.2(Windows Server 2012 R2) 이상에서만 지원됩니다. |
반환 값
NdkSend 함수는 다음 NTSTATUS 코드 중 하나를 반환합니다.
반환 코드 | 설명 |
---|---|
|
보내기 요청이 성공적으로 게시되었습니다. 완료 항목은 작업 요청이 완료되면 CQ(완료 큐)에 큐에 대기됩니다. |
|
큐 쌍(QP)이 연결되지 않았습니다. |
|
오류가 발생했습니다. |
설명
NdkSend 는 QP(큐 쌍)에 보내기 요청을 게시합니다.
관련된 여러 송신 요청을 발급하는 경우 NDK_OP_FLAG_SEND_AND_SOLICIT_EVENT 플래그를 사용할 수 있습니다. 관련 송신 요청 그룹의 마지막 요청에 이 플래그를 설정합니다.
NDK 소비자는 관련된 여러 송신 요청을 실행할 때 이 플래그를 사용할 수 있습니다. NDK 소비자는 마지막 관련 송신 요청에서만 이 플래그를 설정합니다. 피어는 모든 송신 요청을 정상적으로 수신합니다. 그러나 피어가 마지막 보내기 요청( NDK_OP_FLAG_SEND_AND_SOLICIT_EVENT 플래그가 설정된 요청)을 받으면 피어에 대한 완료 큐가 알림을 생성합니다. 알림은 수신 요청이 완료된 후에 생성됩니다. 이 플래그는 수신기가 이전에 알림 유형이 NDK_CQ_NOTIFY_SOLICITED 설정된 NdkArmCq(NDK_FN_ARM_CQ) 함수를 호출하지 않는 한 수신기(피어)에 의미가 없습니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | 지원되지 않음, NDIS 6.30 이상에서 지원됨 |
지원되는 최소 서버 | Windows Server 2012 |
대상 플랫폼 | Windows |
헤더 | ndkpi.h(Ndkpi.h 포함) |
IRQL | <=DISPATCH_LEVEL |