Condividi tramite


Funzione NdisCopyFromPacketToPacketSafe (ndis.h)

Nota NDIS 5. x è stato deprecato e sostituito da NDIS 6. x. Per i nuovi driver NDIS, vedere Driver di rete a partire da Windows Vista. Per informazioni sulla conversione di NDIS 5. driver x a NDIS 6. x, vedere Porting NDIS 5.x Drivers to NDIS 6.0.

NdisCopyFromPacketToPacket copia un intervallo di dati specificato da un pacchetto a un altro.

Sintassi

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

Parametri

[in] Destination

Puntatore al descrittore del pacchetto di destinazione.

[in] DestinationOffset

Specifica l'offset di byte all'interno del pacchetto di destinazione in corrispondenza del quale iniziare a scrivere i dati copiati.

[in] BytesToCopy

Specifica il numero di byte da copiare.

[in] Source

Puntatore al descrittore del pacchetto di origine.

[in] SourceOffset

Specifica l'offset di byte all'interno del pacchetto di origine in corrispondenza del quale iniziare a copiare i dati.

[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 ByteToCopy se il pacchetto di origine esaurisce i dati o il pacchetto di destinazione esaurisce lo spazio.

Priority

Valore restituito

Nessuno

Osservazioni

Valore restituito: Nessuno

I driver devono chiamare NdisCopyFromPacketToPacketSafe anziché NdisCopyFromPacketToPacket. I driver miniport NDIS 5.1 devono chiamare NdisCopyFromPacketToPacketSafe anziché NdisCopyFromPacketToPacket. A differenza di NdisCopyFromPacketToPacket, NdisCopyFromPacketToPacketSafe non causa un controllo dei bug se le risorse di sistema sono basse o esaurite.

Il chiamante di NdisCopyFromPacketToPacket alloca anche il pacchetto di destinazione, se non il pacchetto di origine. Il descrittore di pacchetti del pacchetto di destinazione deve disporre di descrittori del buffer concatenati sufficienti per ricevere i dati.

Se il pacchetto di origine esaurisce i dati o il pacchetto di destinazione non ha spazio prima della copia del numero specificato di byte, l'operazione di copia viene arrestata. In entrambi i casi, NdisCopyFromPacketToPacket restituisce il numero di byte copiati correttamente dall'origine al pacchetto di destinazione.

NdisCopyFromPacketToPacket non copia le informazioni fuori banda associate all'origine specificata nell'di destinazione. Per copiare queste informazioni, il driver può usare puntatori restituiti da NDIS_OOB_DATA_FROM_PACKET e quindi chiamare NdisMoveMemory.

Il driver deve rilasciare qualsiasi blocco spin che mantiene prima di chiamare NdisCopyFromPacketToPacket.

  • Piattaforma di destinazione: universal
  • Versione: non supportata per i driver NDIS 6.0 in Windows Vista. Usare NdisCopyFromNetBufferToNetBuffer. Supportato per i driver NDIS 5.1 in Windows Vista e Windows XP, ma usa invece NdisCopyFromPacketToPacketSafe.

Fabbisogno

Requisito Valore
intestazione ndis.h (include Ndis.h)
libreria Ndis.lib
IRQL IRQL <= DISPATCH_LEVEL

Vedere anche