Функция NdisCopyFromPacketToPacketSafe (ndis.h)

Примечание NDIS 5. X является нерекомендуемым и заменен NDIS 6. x. Сведения о разработке новых драйверов NDIS см. в статье Сетевые драйверы, начиная с Windows Vista. Сведения о переносе NDIS 5. x драйверы для NDIS 6. x, см. раздел Перенос драйверов NDIS 5.x в NDIS 6.0.

NdisCopyFromPacketToPacket копирует указанный диапазон данных из одного пакета в другой.

Синтаксис

void NdisCopyFromPacketToPacketSafe(
  [in]  IN PNDIS_PACKET     Destination,
  [in]  IN UINT             DestinationOffset,
  [in]  IN UINT             BytesToCopy,
  [in]  IN PNDIS_PACKET     Source,
  [in]  IN UINT             SourceOffset,
  [out] OUT PUINT           BytesCopied,
        IN MM_PAGE_PRIORITY Priority
);

Параметры

[in] Destination

Указатель на дескриптор конечного пакета.

[in] DestinationOffset

Задает смещение байтов в целевом пакете, с которого начинается запись скопированных данных.

[in] BytesToCopy

Указывает количество байтов для копирования.

[in] Source

Указатель на дескриптор исходного пакета.

[in] SourceOffset

Указывает смещение байтов в исходном пакете, с которого начинается копирование данных.

[out] BytesCopied

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

Priority

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

None

Remarks

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

Драйверы должны вызывать NdisCopyFromPacketToPacketSafe вместо NdisCopyFromPacketToPacket. Драйверы мини-порта NDIS 5.1 должны вызывать NdisCopyFromPacketToPacketSafe вместо NdisCopyFromPacketToPacket. В отличие от NdisCopyFromPacketToPacket, NdisCopyFromPacketToPacketSafe не вызывает ошибку проверка, если системные ресурсы являются низкими или исчерпаны.

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

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

NdisCopyFromPacketToPacket не копирует сведения, связанные с данным источником , в назначение. Чтобы скопировать эти сведения, драйвер может использовать указатели, возвращаемые NDIS_OOB_DATA_FROM_PACKET , а затем вызвать NdisMoveMemory.

Драйвер должен освободить все блокировки спина, которые он удерживает, прежде чем вызывать NdisCopyFromPacketToPacket.

  • Целевая платформа: универсальная
  • Версия: не поддерживается для драйверов NDIS 6.0 в Windows Vista. Вместо этого используйте NdisCopyFromNetBufferToNetBuffer. Поддерживается для драйверов NDIS 5.1 в Windows Vista и Windows XP, но вместо этого используйте NdisCopyFromPacketToPacketSafe.

Требования

Требование Значение
Заголовок ndis.h (включая Ndis.h)
Библиотека Ndis.lib
IRQL IRQL <= DISPATCH_LEVEL

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