Fonction NdisCopyFromNetBufferToNetBuffer (ndis/nblapi.h)

Appelez la fonction NdisCopyFromNetBufferToNetBuffer pour copier des données d’une structure source NET_BUFFER 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 NET_BUFFER de destination précédemment allouée.

[in] DestinationOffset

Décalage d’octets dans la structure de NET_BUFFER de destination à partir de 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’octets dans la structure NET_BUFFER source à partir de 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 BytesToCopy si la source manque de données ou si la destination manque d’espace.

Valeur retournée

NdisCopyFromNetBufferToNetBuffer retourne l’une des valeurs status suivantes :

Code de retour 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 de NET_BUFFER de destination et éventuellement la structure de NET_BUFFER source. Les fichiers MDL de la structure de NET_BUFFER de destination doivent avoir suffisamment d’espace pour recevoir les données.

Si la structure source NET_BUFFER manque de données ou si la structure de destination NET_BUFFER manque d’espace avant que le nombre d’octets spécifié 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 de NET_BUFFER de destination.

L’appelant doit s’assurer que les valeurs CurrentMdlOffset et 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 les valeurs DataLength, DataOffset et CurrentMdlOffset dans le NET_BUFFER de destination après le retour de NdisCopyFromNetBufferToNetBuffer .

NDIS utilise les décalages dans les paramètres DestionationOffset et SourceOffset de NdisCopyFromNetBufferToNetBuffer Comme décalages par rapport au décalage de données actuel. Par exemple, si la valeur CurrentMdlOffset dans le NET_BUFFER de destination est x et que la 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écrit par la valeur CurrentMdl . Des règles similaires s’appliquent à CurrentMdlOffset dans le NET_BUFFER source et à la valeur SourceOffset .

Configuration requise

Condition requise Valeur
Client minimal pris en charge Pris en charge dans NDIS 6.0 et versions ultérieures.
Plateforme cible Universal
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