Поделиться через


Функция NdisCopyFromNetBufferToNetBuffer (ndis/nblapi.h)

Вызовите функцию NdisCopyFromNetBufferToNetBuffer для копирования данных из структуры NET_BUFFER источника в целевую структуру NET_BUFFER.

Синтаксис

NDIS_EXPORTED_ROUTINE NDIS_STATUS NdisCopyFromNetBufferToNetBuffer(
  [in]  NET_BUFFER       *Destination,
  [in]  ULONG            DestinationOffset,
  [in]  ULONG            BytesToCopy,
  [in]  NET_BUFFER const *Source,
  [in]  ULONG            SourceOffset,
  [out] ULONG            *BytesCopied
);

Параметры

[in] Destination

Указатель на ранее выделенную целевую NET_BUFFER структуру.

[in] DestinationOffset

Смещение байтов в целевой NET_BUFFER структуры, с которой начинается запись скопированных данных. Дополнительные сведения о DestinationOffset см. в следующем разделе Примечания.

[in] BytesToCopy

Число байт для копирования.

[in] Source

Указатель на ранее выделенную исходную NET_BUFFER структуру.

[in] SourceOffset

Смещение байтов в исходной NET_BUFFER структуре, с которой начинается копирование данных. Дополнительные сведения о SourceOffset см. в следующем разделе Примечания.

[out] BytesCopied

Указатель на предоставленную вызывающей переменной, в которой эта функция возвращает количество фактически скопированных байтов. Это число может быть меньше значения BytesToCopy , если в источнике иссякают данные или в целевом объекте заканчивается пространство.

Возвращаемое значение

NdisCopyFromNetBufferToNetBuffer возвращает одно из следующих значений состояния:

Код возврата Описание
NDIS_STATUS_SUCCESS
Операция копирования успешно завершена.
NDIS_STATUS_RESOURCES
Операция копирования завершилась сбоем из-за нехватки ресурсов.

Комментарии

Вызывающий объект NdisCopyFromNetBufferToNetBuffer выделяет целевую структуру NET_BUFFER и, возможно, структуру исходного NET_BUFFER. Многомерные списки целевой NET_BUFFER структуры должны иметь достаточно места для получения данных.

Если в исходной NET_BUFFER структуре заканчивается количество данных или в целевой NET_BUFFER структуре заканчивается пространство до копирования указанного количества байтов, операция копирования останавливается. В любом случае NdisCopyFromNetBufferToNetBuffer возвращает количество байтов, успешно скопированных из источника в целевую структуру NET_BUFFER.

Вызывающий объект должен убедиться, что значения CurrentMdlOffset и CurrentMdl верны в структурах исходного и целевого NET_BUFFER . NDIS не изменяет элементы в целевом NET_BUFFER. Вызывающий объект должен обновить значения DataLength, DataOffset и CurrentMdlOffset в целевом NET_BUFFER после возврата NdisCopyFromNetBufferToNetBuffer .

NDIS использует смещения в параметрах DestionationOffset и SourceOffsetNdisCopyFromNetBufferToNetBuffer в качестве смещения от текущего смещения данных. Например, если значение CurrentMdlOffset в целевом NET_BUFFER равно x, а значение DestinationOffset равно y, NDIS копирует данные в целевой NET_BUFFER со смещением x+ y в памяти, описываемой значением CurrentMdl . Аналогичные правила применяются к CurrentMdlOffset в исходном NET_BUFFER и значении SourceOffset .

Требования

Требование Значение
Минимальная версия клиента Поддерживается в NDIS 6.0 и более поздних версиях.
Целевая платформа Универсальное
Верхняя часть ndis/nblapi.h (включая ndis.h)
Библиотека Ndis.lib
IRQL <= DISPATCH_LEVEL
Правила соответствия DDI Irql_NetBuffer_Function(ndis)

См. также раздел

NET_BUFFER