функция обратного вызова NDIS_TCP_OFFLOAD_RECEIVE_COMPLETE (ndischimney.h)
[Функция разгрузки tcp chimney является устаревшей и не должна использоваться.]
Целевой объект разгрузки вызывает функцию NdisTcpOffloadReceiveComplete , чтобы вернуть опубликованные запросы на получение (буферы получения) в стек узлов. Целевой объект разгрузки ранее получил запросы на получение в одном или нескольких вызовахФункция MiniportTcpOffloadReceive.
Синтаксис
NDIS_TCP_OFFLOAD_RECEIVE_COMPLETE NdisTcpOffloadReceiveComplete;
void NdisTcpOffloadReceiveComplete(
[in] IN NDIS_HANDLE NdisMiniportHandle,
[in] IN PNET_BUFFER_LIST NetBufferList
)
{...}
Параметры
[in] NdisMiniportHandle
Дескриптор, полученный целевым объектом разгрузки при предыдущем вызовеФункция NdisMRegisterMiniportDriver.
[in] NetBufferList
Указатель на структуру NET_BUFFER_LIST . Эта структура может быть автономной или первой в связанном списке NET_BUFFER_LIST структур. Целевой объект разгрузки получил эти структуры в одном или нескольких вызовахФункция MiniportTcpOffloadReceive.
Возвращаемое значение
None
Remarks
Целевой объект разгрузки должен использовать и возвращать предварительно отложенные запросы на получение в порядке, в котором запросы были размещены в Функция MiniportTcpOffloadReceive целевого объекта разгрузки. Это значит, что целевой объект разгрузки должен использовать и возвращать предварительно отправляемые запросы на получение в порядке fifo.
Целевой объект разгрузки должен сериализовать вызовы функции NdisTcpOffloadReceiveComplete и дляФункция NdisTcpOffloadReceiveHandler для каждого соединения.
Функция MiniportTcpOffloadReceive целевого объекта разгрузки может быть вызвана в контексте вызова целевого объекта разгрузки функции NdisTcpOffloadReceiveComplete . В этом случае целевой объект разгрузки не должен повторно вызывать функцию NdisTcpOffloadReceiveComplete , пока не будет возвращен предыдущий вызов NdisTcpOffloadReceiveComplete .
Чтобы повысить производительность системы, целевой объект разгрузки может создать связанный список, содержащий структуры NET_BUFFER_LIST из нескольких вызовов к егоФункция MiniportTcpOffloadReceive. Целевой объект разгрузки может передать такой связанный список в одном вызове функции NdisTcpOffloadReceiveComplete . Обратите внимание, что целевой объект разгрузки может распространять запросы на получение, которые были размещены в одном вызове в Функция MiniportTcpOffloadReceive выполняется в нескольких вызовах завершения, если целевой объект разгрузки завершает запросы на получение в том же порядке, что и в функции MiniportTcpOffloadReceive .
Перед вызовом функции NdisTcpOffloadReceiveComplete целевой объект разгрузки выполняет следующие действия для каждой структуры NET_BUFFER_LIST, которая передается в функцию:
- Записывает одно из следующих значений состояния в элемент Status :
- NDIS_STATUS_SUCCESS
- Целевой объект разгрузки получил все данные, связанные с NET_BUFFER_LIST структурами, на которые ссылается параметр NetBufferList . Целевой объект разгрузки также усовершенствовал переменные RcvNxt и RcvWnd в делегированном состоянии TCP для TCP-подключения. Целевой объект разгрузки может создать или не создать подтверждение для полученных данных в зависимости от того, ожидает ли целевой объект разгрузки отправки отложенного подтверждения.
- NDIS_STATUS_REQUEST_ABORTED
- Произошла ошибка, когда целевой объект разгрузки обрабатывал полученные данные. Если целевой объект разгрузки предоставляет допустимые данные с NET_BUFFER_LIST структурами, на которые указывает параметр NetBufferList , целевой объект разгрузки указывает количество допустимых байтов данных путем вызова макроса NET_BUFFER_LIST_INFO . Целевой объект разгрузки может подтвердить или не подтвердить некоторую часть полученных данных.
- NDIS_STATUS_UPLOAD_IN_PROGRESS
- Передается подключение, по которому был размещен буфер.
- NDIS_STATUS_INVALID_STATE
- Запрос на получение был размещен после того, как целевой объект разгрузки указал на отключение путем вызова NdisTcpOffloadEventHandler.
- Указывает количество байтов данных, возвращаемых вызовом макроса NET_BUFFER_LIST_INFO с идентификаторомTcpOffloadBytesTransferred.
- ВызываетФункция NdisAdvanceNetBufferDataStart. Параметр NetBufferList должен указывать на структуру NET_BUFFER, связанную со структурой NET_BUFFER_LIST. Параметр DataOffsetDelta должен указывать количество байтов данных, которые целевой объект разгрузки помещает в списки дескрипторов памяти (MDL), связанные со структурой NET_BUFFER. Параметр FreeMdl должен иметь значение NULL.
Требования
Требование | Значение |
---|---|
Целевая платформа | Универсальное |
Верхняя часть | ndischimney.h (включая Ndischimney.h) |
IRQL | Любой уровень |