A protocol or intermediate driver calls the NdisOffloadTcpDisconnect function to close the send half of an offloaded TCP connection. In addition, if the disconnect to be performed is a graceful disconnect, the protocol or intermediate driver can supply application data that the underlying offload target must transmit on the offloaded TCP connection before it sends a FIN segment.
NDIS_STATUS NdisOffloadTcpDisconnect( _In_ PNDIS_OFFLOAD_HANDLE NdisOffloadHandle, _In_ PNET_BUFFER_LIST NetBufferList, _In_ ULONG Flags );
- NdisOffloadHandle [in]
A pointer to an NDIS_OFFLOAD_HANDLE structure in the caller's context for the offloaded TCP connection. For more information, see Referencing Offloaded State Through an Intermediate Driver.
- NetBufferList [in]
- Flags [in]
As one of the following values, the type of disconnect to be performed:
The NdisOffloadTcpDisconnect function always returns NDIS_STATUS_PENDING. The disconnect operation is always completed asynchronously.
In response to a call to its MiniportTcpOffloadDisconnect function, an intermediate driver calls the NdisOffloadTcpDisconnect function to propagate the disconnect operation to the underlying intermediate driver or offload target. For more information, see Propagating I/O Operations.
To the NdisOffloadTcpXxx function, the intermediate driver passes the following:
An NdisOffloadHandle function that references the NDIS_OFFLOAD_HANDLE structure stored in the intermediate driver's context for the offloaded TCP connection. For more information, see Referencing Offloaded State Through an Intermediate Driver.
The same PNET_BUFFER_LIST pointer that NDIS passed to the intermediate driver's MiniportTcpOffloadDisconnect function.
The same Flags that NDIS passed to the intermediate driver's MiniportTcpOffloadDisconnect function.
When the underlying driver or offload target subsequently completes the disconnect operation by calling the NdisTcpOffloadDisconnectComplete function, NDIS calls the intermediate driver's ProtocolOffloadDisconnectComplete function. The intermediate driver then calls the NdisTcpOffloadDisconnectComplete function to propagate the completion of the disconnect operation.