NDIS_TCP_OFFLOAD_RECEIVE_COMPLETE 콜백 함수(ndischimney.h)

[TCP 굴뚝 오프로드 기능은 더 이상 사용되지 않으며 사용하지 않아야 합니다.]

오프로드 대상은 NdisTcpOffloadReceiveComplete 함수를 호출하여 게시된 수신 요청(수신 버퍼)을 호스트 스택에 반환합니다. 오프로드 대상은 이전에 하나 이상의 호출에서 수신 요청을 수신했습니다. MiniportTcpOffloadReceive 함수입니다.

구문

NDIS_TCP_OFFLOAD_RECEIVE_COMPLETE NdisTcpOffloadReceiveComplete;

void NdisTcpOffloadReceiveComplete(
  [in] IN NDIS_HANDLE NdisMiniportHandle,
  [in] IN PNET_BUFFER_LIST NetBufferList
)
{...}

매개 변수

[in] NdisMiniportHandle

에 대한 이전 호출에서 오프로드 대상이 가져온 핸들입니다. NdisMRegisterMiniportDriver 함수.

[in] NetBufferList

NET_BUFFER_LIST 구조체에 대한 포인터입니다. 이 구조체는 독립 실행형 구조체이거나 연결된 NET_BUFFER_LIST 구조 목록의 첫 번째 구조체일 수 있습니다. 오프로드 대상은 해당 구조체에 대한 하나 이상의 호출에서 이러한 구조를 획득했습니다. MiniportTcpOffloadReceive 함수입니다.

반환 값

없음

설명

오프로드 대상은 요청이 에 게시된 순서대로 미리 게시된 수신 요청을 사용하고 반환해야 합니다.오프로드 대상의 MiniportTcpOffloadReceive 함수입니다. 즉, 오프로드 대상은 FIFO(First out) 순서로 미리 게시된 수신 요청을 사용하고 반환해야 합니다.

오프로드 대상은 NdisTcpOffloadReceiveComplete 함수 및 에 대한 호출을 직렬화해야 합니다. 연결 단위로 NdisTcpOffloadReceiveHandler 함수입니다.

오프로드 대상의 MiniportTcpOffloadReceive 함수는 NdisTcpOffloadReceiveComplete 함수에 대한 오프로드 대상 호출의 컨텍스트에서 호출할 수 있습니다. 이 경우 오프로드 대상은 NdisTcpOffloadReceiveComplete 에 대한 이전 호출이 반환될 때까지 NdisTcpOffloadReceiveComplete 함수를 다시 호출해서는 안 됩니다.

시스템 성능을 향상시키기 위해 오프로드 대상은 여러 호출에서 NET_BUFFER_LIST 구조를 포함하는 연결된 목록을 만들 수 있습니다. MiniportTcpOffloadReceive 함수입니다. 오프로드 대상은 NdisTcpOffloadReceiveComplete 함수에 대한 단일 호출에서 이러한 연결된 목록을 전달할 수 있습니다. 오프로드 대상은 에 대한 단일 호출에 게시된 수신 요청을 배포할 수 있습니다. 오프로드 대상이 MiniportTcpOffloadReceive 함수에 게시된 것과 동일한 순서로 수신 요청을 완료하는 한 두 개 이상의 완료 호출에서 MiniportTcpOffloadReceive 함수입니다.

NdisTcpOffloadReceiveComplete 함수를 호출하기 전에 오프로드 대상은 함수에 전달하는 각 NET_BUFFER_LIST 구조에 대해 다음을 수행합니다.

  • 다음 상태 값 중 하나를 Status 멤버에 씁니다.
    NDIS_STATUS_SUCCESS
    오프로드 대상은 NetBufferList 매개 변수에서 참조하는 NET_BUFFER_LIST 구조와 연결된 모든 데이터를 수신했습니다. 또한 오프로드 대상은 TCP 연결에 대해 TCP 위임 상태에서 RcvNxtRcvWnd 변수를 고급으로 처리했습니다. 오프로드 대상은 오프로드 대상이 지연된 승인을 보내기 위해 대기하는지 여부에 따라 수신된 데이터에 대한 승인을 생성했거나 생성하지 않았을 수 있습니다.
    NDIS_STATUS_REQUEST_ABORTED
    오프로드 대상이 수신된 데이터를 처리하는 동안 오류가 발생했습니다. 오프로드 대상이 NetBufferList 매개 변수가 가리키는 NET_BUFFER_LIST 구조와 함께 일부 유효한 데이터를 제공하는 경우 오프로드 대상은 NET_BUFFER_LIST_INFO 매크로를 호출하여 유효한 데이터 바이트 수를 지정합니다. 오프로드 대상은 수신된 데이터의 일부를 승인하거나 승인하지 않았을 수 있습니다.
    NDIS_STATUS_UPLOAD_IN_PROGRESS
    버퍼가 게시된 연결이 업로드되고 있습니다.
    NDIS_STATUS_INVALID_STATE
    수신 요청은 오프로드 대상이 호출하여 연결 끊기를 표시한 후에 게시되었습니다. NdisTcpOffloadEventHandler.
  • idTcpOffloadBytesTransferredNET_BUFFER_LIST_INFO 매크로를 호출하여 반환되는 데이터 바이트 수를 지정합니다.
  • 를 호출합니다. NdisAdvanceNetBufferDataStart 함수. NetBufferList 매개 변수는 NET_BUFFER_LIST 구조와 연결된 NET_BUFFER 구조를 가리킵니다. DataOffsetDelta 매개 변수는 오프로드 대상이 NET_BUFFER 구조와 연결된 MDL(메모리 설명자 목록)에 배치한 데이터 바이트 수를 지정해야 합니다. FreeMdl 매개 변수는 NULL이어야 합니다.

요구 사항

요구 사항
대상 플랫폼 유니버설
헤더 ndischimney.h(Ndischimney.h 포함)
IRQL 모든 수준

추가 정보

MiniportTcpOffloadReceive

NET_BUFFER

NET_BUFFER_LIST

NdisAdvanceNetBufferDataStart

NdisMRegisterMiniportDriver