When supplied by a miniport driver in response to OID_TCP_TASK_OFFLOAD, the NDIS_TASK_OFFLOAD structure specifies a NIC's capabilities for performing a particular type of task offloaded from the TCP/IP transport. When supplied by the TCP/IP transport in a set of OID_TCP_TASK_OFFLOAD, the NDIS_TASK_OFFLOAD structure specifies an offload task that the TCP/IP transport is enabling.
typedef struct _NDIS_TASK_OFFLOAD
{
ULONG Version;
ULONG Size;
NDIS_TASK Task;
ULONG OffsetNextTask;
ULONG TaskBufferLength;
UCHAR TaskBuffer[1];
} NDIS_TASK_OFFLOAD, *PNDIS_TASK_OFFLOAD;
| Task Type | Contents of TaskBuffer |
|---|---|
| TcpIpChecksumNdisTask | NDIS_TASK_TCP_IP_CHECKSUM structure |
| IpSecNdisTask | NDIS_TASK_IPSEC structure |
| TcpLargeSendNdisTask | NDIS_TASK_TCP_LARGE_SEND structure |
Declared in ndis.h. Include ndis.h.
If a NIC has the appropriate capabilities, the Microsoft TCP/IP transport can offload one or more of the following tasks to a NIC:
The TCP/IP transport determines a NIC's task-offload capabilities by querying OID_TCP_TASK_OFFLOAD. In response, a miniport driver returns in the InformationBuffer an NDIS_TASK_OFFLOAD_HEADER structure followed by one or more NDIS_TASK_OFFLOAD structures. The TaskBuffer of each NDIS_TASK_OFFLOAD structure contains a task-specific structure (NDIS_TASK_TCP_IP_CHECKSUM, NDIS_TASK_IPSEC, or NDIS_TASK_TCP_LARGE_SEND) that specifies a particular task-offload capability supported by the miniport driver's NIC. If the miniport's NIC supports multiple versions of a particular task-offload capability, it returns one NDIS_TASK_OFFLOAD structure for each version.
After querying a NIC's task-offload capabilities, the TCP/IP transport enables a NIC's task-offload capabilities by setting OID_TCP_TASK_OFFLOAD. In this set operation, the TCP/IP transport supplies in the InformationBuffer an NDIS_TASK_OFFLOAD_HEADER structure followed by an NDIS_TASK_OFFLOAD structure for each offload task that it is enabling. The miniport driver must examine each NDIS_TASK_OFFLOAD structure to determine which offload tasks are being enabled. The miniport driver must also examine the task-specific structure in the TaskBuffer of each NDIS_TASK_OFFLOAD structure to determine which specific capabilities for a particular offload task are being enabled.
OID_TCP_TASK_OFFLOAD, NDIS_TASK_IPSEC, NDIS_TASK_OFFLOAD_HEADER, NDIS_TASK_TCP_IP_CHECKSUM, NDIS_TASK_TCP_LARGE_SEND