Funzione NdisCopyFromNetBufferToNetBuffer (ndis/nblapi.h)

Chiamare la funzione NdisCopyFromNetBufferToNetBuffer per copiare i dati da una struttura di NET_BUFFER di origine a una struttura NET_BUFFER di destinazione.

Sintassi

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

Parametri

[in] Destination

Puntatore a una struttura NET_BUFFER di destinazione allocata in precedenza.

[in] DestinationOffset

Offset di byte all'interno della struttura NET_BUFFER di destinazione in corrispondenza del quale iniziare a scrivere i dati copiati. Per altre informazioni su DestinationOffset, vedere la sezione Osservazioni seguente.

[in] BytesToCopy

Il numero di byte da copiare.

[in] Source

Puntatore a una struttura di origine NET_BUFFER allocata in precedenza.

[in] SourceOffset

Offset di byte all'interno della struttura NET_BUFFER di origine in corrispondenza del quale iniziare a copiare i dati. Per altre informazioni su SourceOffset, vedere la sezione Osservazioni seguente.

[out] BytesCopied

Puntatore alla variabile fornita dal chiamante in cui questa funzione restituisce il numero di byte effettivamente copiati. Questo numero può essere minore del valore di BytesToCopy se l'origine esaurisce i dati o la destinazione esaurisce lo spazio.

Valore restituito

NdisCopyFromNetBufferToNetBuffer restituisce uno dei valori di stato seguenti:

Codice restituito Descrizione
NDIS_STATUS_SUCCESS
Operazione di copia completata.
NDIS_STATUS_RESOURCES
L'operazione di copia non è riuscita a causa di risorse insufficienti.

Commenti

Il chiamante di NdisCopyFromNetBufferToNetBuffer alloca la struttura NET_BUFFER di destinazione e possibilmente anche la struttura di NET_BUFFER di origine. Gli ELENCHI DI dati della struttura NET_BUFFER di destinazione devono avere spazio sufficiente per ricevere i dati.

Se la struttura di NET_BUFFER di origine esaurisce i dati o la struttura di destinazione NET_BUFFER esaurisce lo spazio prima della copia del numero specificato di byte, l'operazione di copia viene arrestata. In entrambi i casi , NdisCopyFromNetBufferToNetBuffer restituisce il numero di byte copiati correttamente dall'origine alla struttura NET_BUFFER di destinazione.

Il chiamante deve assicurarsi che i valori CurrentMdlOffset e CurrentMdl siano corretti nelle strutture di origine e destinazione NET_BUFFER . NDIS non modifica i membri nel NET_BUFFER di destinazione. Il chiamante deve aggiornare i valori DataLength, DataOffset e CurrentMdlOffset nella destinazione NET_BUFFER dopo la restituzione di NdisCopyFromNetBufferToNetBuffer .

NDIS usa gli offset nei parametri DestionationOffset e SourceOffset di NdisCopyFromNetBufferToNetBuffer come offset rispetto all'offset dei dati corrente. Ad esempio, se il valore CurrentMdlOffset nel NET_BUFFER di destinazione è x e il valore DestinationOffset è y, NDIS copia i dati nel NET_BUFFER di destinazione in corrispondenza di un offset x+ y nella memoria descritta dal valore CurrentMdl . Le regole simili si applicano all'oggetto CurrentMdlOffset nel NET_BUFFER di origine e al valore SourceOffset .

Requisiti

Requisito Valore
Client minimo supportato Supportato in NDIS 6.0 e versioni successive.
Piattaforma di destinazione Universale
Intestazione ndis/nblapi.h (include ndis.h)
Libreria Ndis.lib
IRQL <= DISPATCH_LEVEL
Regole di conformità DDI Irql_NetBuffer_Function(ndis)

Vedi anche

NET_BUFFER