OID_TCP_TASK_OFFLOAD

호스트 스택은 OID_TCP_TASK_OFFLOAD OID를 쿼리하여 미니포트 드라이버 NIC 또는 오프로드 대상의 TCP 오프로드 기능을 가져옵니다. NIC 또는 오프로드 대상이 지원하는 오프로드 기능을 결정한 후 호스트 스택은 보고된 기능 중 하나 이상을 사용하도록 이 OID를 설정합니다. 호스트 스택은 OID_TCP_TASK_OFFLOAD 설정하여 모든 NIC 또는 오프로드 대상의 TCP 오프로드 기능을 사용하지 않도록 설정할 수도 있습니다. 한 번에 하나의 프로토콜만 특정 NIC의 TCP 오프로드 기능을 사용하도록 설정할 수 있습니다.

오프로드 기능 쿼리

호스트 스택은 OID_TCP_TASK_OFFLOAD 쿼리할 때 InformationBufferNDIS_TASK_OFFLOAD_HEADER 구조를 제공합니다. 이 구조체는 다음을 지정합니다.

  • 호스트 스택에서 지원하는 오프로드 버전입니다.
  • 호스트 스택에서 처리되는 패킷 보내기 및 받기에 대한 캡슐화 형식입니다.
  • 이러한 패킷의 캡슐화 헤더 크기입니다.

이 정보를 사용하면 미니포트 드라이버 또는 해당 NIC가 전송 패킷에서 첫 번째 IP 헤더의 시작을 찾을 수 있습니다. 이는 오프로드 작업을 수행하기 위한 필수 구성 요소입니다. 오프로드 대상은 수신 패킷을 처리하기 위해 캡슐화 형식을 알고 있어야 합니다. OID_TCP_TASK_OFFLOAD 쿼리에 대한 응답으로 미니포트 드라이버 또는 오프로드 대상은 InformationBuffer에서 NDIS_TASK_OFFLOAD_HEADER 구조체와 하나 이상의 NDIS_TASK_OFFLOAD 구조체를 반환합니다. 각 NDIS_TASK_OFFLOAD 구조는 미니포트 드라이버의 NIC 또는 오프로드 대상에서 지원하는 오프로드 기능을 설명합니다. 미니포트 드라이버의 NIC 또는 오프로드 대상이 특정 오프로드 기능의 여러 버전을 지원하는 경우 각 버전에 대해 하나의 NDIS_TASK_OFFLOAD 구조를 반환해야 합니다.

각 NDIS_TASK_OFFLOAD 구조체에는 구조체가 적용되는 특정 오프로드 기능을 지정하는 Task 멤버가 있습니다. 각 NDIS_TASK_OFFLOAD 구조에는 지정된 오프로드 기능과 관련된 정보가 포함된 TaskBuffer 도 있습니다. TaskBuffer의 정보는 다음 구조 중 하나로 형식이 지정됩니다.

참고

중간 드라이버가 패킷에서 TCP 오프로드 함수를 수행할 수 없도록 기본 미니포트 드라이버로 전달하는 패킷의 내용을 수정하는 경우 중간 드라이버는 기본 미니포트 드라이버 또는 오프로드 대상에 OID 요청을 전달하는 대신 NDIS_STATUS_NOT_SUPPORTED 상태 OID_TCP_TASK_OFFLOAD 쿼리에 응답해야 합니다.

오프로드 기능 사용

NIC 또는 오프로드 대상의 오프로드 기능을 쿼리한 후 호스트 스택은 OID_TCP_TASK_OFFLOAD 설정하여 이러한 기능 중 하나 이상을 사용하도록 설정합니다. OID_TCP_TASK_OFFLOAD 설정할 때 호스트 스택은 InformationBuffer에서 NDIS_TASK_OFFLOAD_HEADER 구조와 호스트 스택이 사용하도록 설정하는 각 오프로드 기능에 대한 NDIS_TASK_OFFLOAD 구조가 즉시 제공됩니다.

각 NDIS_TASK_OFFLOAD 구조의 작업은 호스트 스택이 사용하도록 설정하는 오프로드 기능을 나타냅니다. 또한 호스트 스택은 각 NDIS_TASK_OFFLOAD 구조체의 TaskBuffer 에서 구조체의 멤버를 설정하여 특정 오프로드 기능의 특정 측면을 가능하게 합니다.

오프로드 기능 변경

NIC 또는 오프로드 대상에 대해 사용하도록 설정된 오프로드 기능을 변경하려면 호스트 스택이 OID_TCP_TASK_OFFLOAD 설정합니다. 미니포트 드라이버 또는 오프로드 대상은 가장 최근의 OID_TCP_TASK_OFFLOAD 집합에 지정된 오프로드 기능만 사용하도록 설정해야 합니다. 미니포트 드라이버 또는 오프로드 대상은 다른 모든 오프로드 기능을 사용하지 않도록 설정해야 합니다. 특정 TCP 굴뚝 오프로드 기능을 사용하지 않도록 설정하기 전에 호스트 스택은 해당 기능을 사용하는 오프로드된 TCP 연결의 오프로드를 종료합니다.

오프로드 대상은 일시 중지 또는 다시 시작 오프로드 표시를 사용하여 보고된 TCP 오프로드 기능을 변경할 수 있습니다.

  • 오프로드 대상은 NDIS_STATUS_INDICATION-StatusCode> 멤버가 NDIS_STATUS_OFFLOAD_PAUSE 설정된 NdisMIndicateStatusEx 함수를 호출하여 일시 중지 표시를 수행합니다.
  • 오프로드 대상은 NDIS_STATUS_INDICATION-StatusCode> 멤버가 NDIS_STATUS_OFFLOAD_RESUME 설정된 NdisMIndicateStatusEx 함수를 호출하여 다시 시작을 표시합니다.

오프로드 대상이 호스트 스택에 상태 개체 오프로드를 다시 시작하도록 요청하면 호스트 스택은 다시 OID_TCP_TASK_OFFLOAD 쿼리하여 오프로드 대상의 TCP 오프로드 수정된 기능을 가져옵니다. 자세한 내용은 NDIS_STATUS_OFFLOAD_RESUME.

오프로드 기능 사용 안 림

NIC 또는 오프로드 대상에서 지원하는 모든 오프로드 기능을 사용하지 않도록 설정하려면 호스트 스택이 OID_TCP_TASK_OFFLOAD 설정합니다. InformationBuffer에서 호스트 스택은 이 구조체의 OffsetFirstTask 멤버가 0으로 설정된 NDIS_TASK_OFFLOAD_HEADER 구조를 제공합니다.

요구 사항

버전: Windows Vista 이상 헤더: Ntddndis.h(Ndis.h 포함)