In NDIS 6.0 and later versions, user-mode applications (or overlying drivers) can enable or disable TCP/IP offload capabilities. A system administrator can access the settings through the Microsoft Windows Management Instrumentation (WMI) interface. There might also be capabilities that are disabled through registry settings that can be enabled if they are supported in the hardware.
In response to an OID_TCP_OFFLOAD_PARAMETERS object identifier (OID) set request, a miniport driver uses the settings in the NDIS_OFFLOAD_PARAMETERS structure to set the current offload or connection offload configuration of the miniport adapter.
NDIS retains the requested settings in the registry in the offload standardized keywords. When NDIS restarts the miniport adapter, the miniport driver reads the offload standardized keywords and uses them to set the default offload configuration of the NIC. If the miniport driver also supports non-standard keywords, the miniport driver is responsible for updating the registry when it changes the task offload settings. For more information about the standardized keywords, see Standardized INF Keywords for Network Devices.
The miniport drivers must use the contents of the NDIS_OFFLOAD_PARAMETERS structure to update the currently reported offload configuration. The miniport driver must report the current configuration with the task offload NDIS_STATUS_TASK_OFFLOAD_CURRENT_CONFIG or connection offload NDIS_STATUS_OFFLOAD_RESUME status indication. (For information on NDIS_STATUS_OFFLOAD_RESUME, see NDIS 6.0 TCP chimney offload documentation.) The status indication ensures that all of the overlying protocol drivers are updated with the new capabilities information.
Before user-mode applications (or overlying drivers) set OID_TCP_OFFLOAD_PARAMETERS they can use the OID_TCP_OFFLOAD_HARDWARE_CAPABILITIES OID or OID_TCP_CONNECTION_OFFLOAD_HARDWARE_CAPABILITIES OID to determine what capabilities a miniport adapter's hardware can support. Use the OID_TCP_OFFLOAD_PARAMETERS OID to enable capabilities that the OID_TCP_OFFLOAD_CURRENT_CONFIG OID or OID_TCP_CONNECTION_OFFLOAD_CURRENT_CONFIG OID reports as not currently enabled.
If the hardware capabilities change (for example, because a MUX intermediate driver switches to a difference underlying miniport adapter), the intermediate driver must report any changes in offload hardware capabilities with the NDIS_STATUS_TASK_OFFLOAD_HARDWARE_CAPABILITIES or NDIS_STATUS_TCP_CONNECTION_OFFLOAD_HARDWARE_CAPABILITIES status indication.
NDIS and overlying drivers can use the OID_OFFLOAD_ENCAPSULATION OID to set or query the task offload encapsulation settings of an underlying miniport adapter. The InformationBuffer member of the NDIS_OID_REQUEST structure contains an NDIS_OFFLOAD_ENCAPSULATION structure.