Функция 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 возвращает одно из следующих значений состояния:
Код возврата | Описание |
---|---|
|
Операция копирования успешно завершена. |
|
Операция копирования завершилась сбоем из-за нехватки ресурсов. |
Комментарии
Вызывающий объект 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) |