функция обратного вызова NDIS_TCP_OFFLOAD_RECEIVE_COMPLETE (ndischimney.h)
[Функция разгрузки дымохода TCP не рекомендуется и не должна использоваться.]
Целевой объект разгрузки вызывает функцию 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.
Возвращаемое значение
Никакой
Замечания
Целевой объект разгрузки должен использовать и возвращать предварительно отправляемые запросы на получение в том порядке, в котором запросы были размещены в функцию MiniportTcpOffloadReceive целевого объекта разгрузки. То есть целевой объект разгрузки должен использовать и возвращать предварительно отправляемые запросы на получение в первом порядке (FIFO).
Целевой объект разгрузки должен сериализовать вызовы функции NdisTcpOffloadReceiveComplete и в функцию функцию NdisTcpOffloadReceiveHandler на -connection основе.
Функцию целевого объекта 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 должен указать количество байтов данных, которые целевой объект разгрузки, помещенный в списки дескрипторов памяти (MDLs), связанные со структурой NET_BUFFER. Параметр FreeMdl должен быть NULL.
Требования
Требование | Ценность |
---|---|
целевая платформа | Всеобщий |
заголовка | ndischimney.h (включая Ndischimney.h) |
IRQL | Любой уровень |