Compartir a través de


Función NdisCopyFromNetBufferToNetBuffer (ndis/nblapi.h)

Llame a la función NdisCopyFromNetBufferToNetBuffer para copiar datos de una estructura de NET_BUFFER de origen a una estructura de NET_BUFFER de destino.

Sintaxis

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

Parámetros

[in] Destination

Puntero a una estructura de destino asignada previamente NET_BUFFER.

[in] DestinationOffset

Desplazamiento de bytes dentro de la estructura NET_BUFFER de destino en la que empezar a escribir los datos copiados. Para obtener más información sobre DestinationOffset, vea la siguiente sección Comentarios.

[in] BytesToCopy

Número de bytes que se van a copiar.

[in] Source

Puntero a una estructura de origen asignada previamente NET_BUFFER.

[in] SourceOffset

Desplazamiento de bytes dentro de la estructura NET_BUFFER de origen en la que se van a empezar a copiar los datos. Para obtener más información sobre sourceOffset, vea la siguiente sección Comentarios.

[out] BytesCopied

Puntero a la variable proporcionada por el autor de la llamada en la que esta función devuelve el número de bytes copiados realmente. Este número puede ser menor que el valor de BytesToCopy si el origen se queda sin datos o el destino se queda sin espacio.

Valor devuelto

NdisCopyFromNetBufferToNetBuffer devuelve uno de los siguientes valores de estado:

Código devuelto Descripción
NDIS_STATUS_SUCCESS
La operación de copia se completó correctamente.
NDIS_STATUS_RESOURCES
Error en la operación de copia debido a recursos insuficientes.

Observaciones

El autor de la llamada de NdisCopyFromNetBufferToNetBuffer asigna la estructura de NET_BUFFER de destino y posiblemente también la estructura de NET_BUFFER de origen. Las MDL de la estructura de NET_BUFFER de destino deben tener suficiente espacio para recibir los datos.

Si el origen NET_BUFFER estructura se queda sin datos o la estructura de destino NET_BUFFER se queda sin espacio antes de copiar el número especificado de bytes, la operación de copia se detiene. En cualquier caso, NdisCopyFromNetBufferToNetBuffer devuelve el número de bytes copiados correctamente del origen a la estructura de NET_BUFFER de destino.

El autor de la llamada debe asegurarse de que CurrentMdlOffset y valores de CurrentMdl sean correctos en las estructuras NET_BUFFER de origen y destino. NDIS no cambia los miembros del NET_BUFFER de destino. El autor de la llamada debe actualizar los valores de DataLength, DataOffsety CurrentMdlOffset en el NET_BUFFER de destino después de NdisCopyFromNetBufferToNetBuffer.

NDIS usa los desplazamientos en el DestionAtionOffset y parámetros SourceOffset de NdisCopyFromNetBufferToNetBuffer como desplazamientos del desplazamiento de datos actual. Por ejemplo, si el valor CurrentMdlOffset del NET_BUFFER de destino es xy valor destinationOffset es y, NDIS copia los datos en el NET_BUFFER de destino en un desplazamiento x+ y en la memoria que describe el CurrentMdl valor. Se aplican reglas similares al CurrentMdlOffset de en el NET_BUFFER de origen y el valor de SourceOffset.

Requisitos

Requisito Valor
cliente mínimo admitido Se admite en NDIS 6.0 y versiones posteriores.
de la plataforma de destino de Universal
encabezado de ndis/nblapi.h (incluya ndis.h)
biblioteca de Ndis.lib
irQL <= DISPATCH_LEVEL
reglas de cumplimiento de DDI Irql_NetBuffer_Function(ndis)

Consulte también

NET_BUFFER