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 위임 상태에서 RcvNxt 및 RcvWnd 변수를 고급으로 처리했습니다. 오프로드 대상은 오프로드 대상이 지연된 승인을 보내기 위해 대기하는지 여부에 따라 수신된 데이터에 대한 승인을 생성했거나 생성하지 않았을 수 있습니다.
- NDIS_STATUS_REQUEST_ABORTED
- 오프로드 대상이 수신된 데이터를 처리하는 동안 오류가 발생했습니다. 오프로드 대상이 NetBufferList 매개 변수가 가리키는 NET_BUFFER_LIST 구조와 함께 일부 유효한 데이터를 제공하는 경우 오프로드 대상은 NET_BUFFER_LIST_INFO 매크로를 호출하여 유효한 데이터 바이트 수를 지정합니다. 오프로드 대상은 수신된 데이터의 일부를 승인하거나 승인하지 않았을 수 있습니다.
- NDIS_STATUS_UPLOAD_IN_PROGRESS
- 버퍼가 게시된 연결이 업로드되고 있습니다.
- NDIS_STATUS_INVALID_STATE
- 수신 요청은 오프로드 대상이 호출하여 연결 끊기를 표시한 후에 게시되었습니다. NdisTcpOffloadEventHandler.
- id가 TcpOffloadBytesTransferred인 NET_BUFFER_LIST_INFO 매크로를 호출하여 반환되는 데이터 바이트 수를 지정합니다.
- 를 호출합니다. NdisAdvanceNetBufferDataStart 함수. NetBufferList 매개 변수는 NET_BUFFER_LIST 구조와 연결된 NET_BUFFER 구조를 가리킵니다. DataOffsetDelta 매개 변수는 오프로드 대상이 NET_BUFFER 구조와 연결된 MDL(메모리 설명자 목록)에 배치한 데이터 바이트 수를 지정해야 합니다. FreeMdl 매개 변수는 NULL이어야 합니다.
요구 사항
요구 사항 | 값 |
---|---|
대상 플랫폼 | 유니버설 |
헤더 | ndischimney.h(Ndischimney.h 포함) |
IRQL | 모든 수준 |