Partager via


NdisCopyFromNetBufferToNetBuffer, fonction (ndis/nblapi.h)

Appelez la fonction NdisCopyFromNetBufferToNetBuffer pour copier des données d’une structure NET_BUFFER source vers une structure de NET_BUFFER de destination.

Syntaxe

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
);

Paramètres

[in] Destination

Pointeur vers une structure de destination précédemment allouée NET_BUFFER.

[in] DestinationOffset

Décalage d’octet dans la structure NET_BUFFER de destination à laquelle commencer l’écriture des données copiées. Pour plus d’informations sur destinationOffset, consultez la section Remarques suivante.

[in] BytesToCopy

Nombre d’octets à copier.

[in] Source

Pointeur vers une structure de NET_BUFFER source précédemment allouée.

[in] SourceOffset

Décalage d’octet dans la structure NET_BUFFER source à laquelle commencer la copie des données. Pour plus d’informations sur SourceOffset, consultez la section Remarques suivante.

[out] BytesCopied

Pointeur vers la variable fournie par l’appelant dans laquelle cette fonction retourne le nombre d’octets réellement copiés. Ce nombre peut être inférieur à la valeur de octetsToCopy si la source manque de données ou si la destination manque d’espace.

Valeur de retour

NdisCopyFromNetBufferToNetBuffer retourne l’une des valeurs d’état suivantes :

Retourner le code Description
NDIS_STATUS_SUCCESS
L’opération de copie s’est terminée avec succès.
NDIS_STATUS_RESOURCES
L’opération de copie a échoué en raison de ressources insuffisantes.

Remarques

L’appelant de NdisCopyFromNetBufferToNetBuffer alloue également la structure NET_BUFFER de destination et éventuellement la structure NET_BUFFER source. Les MDL de la structure NET_BUFFER de destination doivent avoir suffisamment d’espace pour recevoir les données.

Si la source NET_BUFFER structure s’exécute en dehors des données ou si la structure de destination NET_BUFFER manque d’espace avant que le nombre spécifié d’octets ait été copié, l’opération de copie s’arrête. Dans les deux cas, NdisCopyFromNetBufferToNetBuffer retourne le nombre d’octets correctement copiés de la source vers la structure NET_BUFFER de destination.

L’appelant doit s’assurer que CurrentMdlOffset et valeurs currentMdl sont correctes dans les structures de NET_BUFFER source et de destination. NDIS ne modifie pas les membres dans le NET_BUFFER de destination. L’appelant doit mettre à jour le DataLength, DataOffsetet valeurs CurrentMdlOffset dans le NET_BUFFER de destination après NdisCopyFromNetBufferToNetBufferToNetBuffer.

NDIS utilise les décalages dans les paramètres DestionationOffset et SourceOffset des paramètres de NdisCopyFromNetBufferToNetBuffer comme décalages du décalage de données actuel. Par exemple, si la valeur currentMdlOffset dans le NET_BUFFER de destination est x, et valeur DestinationOffset est y, NDIS copie les données dans le NET_BUFFER de destination à un décalage x+ y dans la mémoire décrite par la valeur CurrentMdl. Les règles similaires s’appliquent aux CurrentMdlOffset dans le NET_BUFFER source et à la valeur SourceOffset.

Exigences

Exigence Valeur
client minimum pris en charge Prise en charge dans NDIS 6.0 et versions ultérieures.
plateforme cible Universel
d’en-tête ndis/nblapi.h (include ndis.h)
bibliothèque Ndis.lib
IRQL <= DISPATCH_LEVEL
règles de conformité DDI Irql_NetBuffer_Function(ndis)

Voir aussi

NET_BUFFER