W_TCP_OFFLOAD_FORWARD_HANDLER 콜백 함수(ndischimney.h)
[TCP 굴뚝 오프로드 기능은 더 이상 사용되지 않으며 사용하면 안 됩니다.]
NDIS는 MiniportTcpOffloadForward 함수를 호출하여 승인되지 않은 수신된 TCP 세그먼트를 오프로드 대상으로 전달합니다.
구문
W_TCP_OFFLOAD_FORWARD_HANDLER WTcpOffloadForwardHandler;
NDIS_STATUS WTcpOffloadForwardHandler(
[in] IN NDIS_HANDLE MiniportAdapterContext,
[in] IN PVOID MiniportOffloadContext,
[in] IN PNET_BUFFER_LIST NetBufferList
)
{...}
매개 변수
[in] MiniportAdapterContext
오프로드 대상이 어댑터의 이 instance 대한 상태 정보를 유지하는 오프로드 대상 할당 컨텍스트 영역에 대한 핸들입니다. 미니포트 드라이버는 호출할 때 NDIS에 이 핸들을 제공했습니다. NdisMSetMiniportAttributes 의 MiniportInitializeEx 함수입니다.
[in] MiniportOffloadContext
PVOID 값이 포함된 메모리 위치에 대한 포인터입니다. 이 PVOID 값은 TCP 세그먼트가 전달되는 TCP 연결에 대한 상태 개체를 포함하는 미니포트 오프로드 컨텍스트를 참조합니다. 오프로드 대상은 TCP 연결 상태 개체를 오프로드할 때 이 PVOID 값을 제공했습니다.
[in] NetBufferList
NET_BUFFER_LIST 구조체에 대한 포인터입니다. 이 구조체는 독립 실행형 구조체이거나 NET_BUFFER_LIST 구조체의 연결된 목록에서 첫 번째 구조체일 수 있습니다. 목록의 각 NET_BUFFER_LIST 구조체는 하나의 NET_BUFFER 구조를 설명합니다. 각 NET_BUFFER 구조체는 MDL(메모리 설명자 목록) 체인에 매핑됩니다. NET_BUFFER 구조체와 연결된 MDL에는 오프로드 대상으로 전달되는 TCP 세그먼트가 하나만 포함됩니다. 첫 번째 MDL의 첫 번째 바이트는 TCP 헤더의 첫 번째 바이트입니다. NET_BUFFER_LIST 및 관련 구조체는 잠겨 있으므로 실제 메모리에 상주합니다. 그러나 시스템 메모리에 매핑되지 않습니다.
반환 값
NDIS_STATUS_PENDING 유일한 허용 반환 값입니다. 오프로드 대상은 항상 를 호출하여 정방향 요청을 비동기적으로 완료합니다. NdisTcpOffloadForwardComplete 함수.
설명
호스트 스택은 수신되었지만 다음 상황에서 승인되지 않은 하나 이상의 TCP 세그먼트를 전달합니다.
- 호스트 스택은 오프로드 대상에 오프로드되는 TCP 연결에서 세그먼트를 수신했습니다. 연결이 완전히 오프로드되지 않았기 때문에 오프로드 대상은 당시 TCP 세그먼트를 처리할 수 없습니다.
- 호스트 스택은 TCP 연결이 오프로드된 네트워크 인터페이스 이외의 네트워크 인터페이스에서 세그먼트를 받은 다중 호스트 시스템에 있습니다.
- 오프로드 대상은 이전에 IP 옵션이 설정되었거나 다시 어셈블리가 필요한 조각인 수신된 패킷을 표시했습니다. IP 옵션을 처리하거나 패킷을 성공적으로 다시 조립한 후 호스트 스택은 TCP 세그먼트를 오프로드 대상으로 전달합니다.
- 해당 연결이 오프로드되고 있습니다. 호스트 스택은 항상 해당 연결에 대한 패킷을 전달하기 전에 연결의 오프로드가 완료되기를 기다립니다. 호스트 스택은 연결의 오프로드가 완료된 후 가능한 한 빨리 TCP 세그먼트를 전달합니다. 그러나 이러한 세그먼트를 전달하기 위한 시간 제한은 없습니다.
- 해당 연결의 오프로드가 종료되고 있습니다. 이 경우 호스트 스택은 오프로드 종료가 완료될 때까지 데이터를 버퍼링한 다음 세그먼트를 처리합니다.
TCP 세그먼트를 전달할 때 호스트 스택은 NET_BUFFER 구조당 하나의 TCP 세그먼트를 전송합니다. 호스트 스택은 하나의 NET_BUFFER 구조만 연결되므로 연결된 목록의 각 NET_BUFFER_LIST 구조와 하나의 전달된 TCP 세그먼트를 연결합니다.
호스트 스택은 NDIS가 MiniportTcpOffloadForward 함수에 전달하는 NET_BUFFER_LIST 및 연결된 구조를 할당합니다. 오프로드 대상은 에 전달될 때까지 이러한 리소스를 소유합니다. NdisTcpOffloadForwardComplete 함수. 이러한 리소스를 소유하는 동안 오프로드 대상은 처리를 위해 자유롭게 큐에 대기할 수 있습니다.
요구 사항
요구 사항 | 값 |
---|---|
대상 플랫폼 | Windows |
헤더 | ndischimney.h(Ndischimney.h 포함) |
IRQL | 모든 수준 |