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 |
---|---|
|
L’opération de copie s’est terminée avec succès. |
|
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) |