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 NET_BUFFER de destino asignada previamente.

[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 sección Comentarios siguientes.

[in] BytesToCopy

Número de bytes que se van a copiar.

[in] Source

Puntero a una estructura NET_BUFFER de origen asignada previamente.

[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.

Comentarios

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. Los MDL de la estructura de NET_BUFFER de destino deben tener espacio suficiente 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 los valores CurrentMdlOffset y CurrentMdl sean correctos en las estructuras de origen y destino NET_BUFFER. NDIS no cambia los miembros del NET_BUFFER de destino. El llamador debe actualizar los valores DataLength, DataOffset y CurrentMdlOffset en el NET_BUFFER de destino después de que se devuelva NdisCopyFromNetBufferToNetBuffer .

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

Requisitos

Requisito Value
Cliente mínimo compatible Se admite en NDIS 6.0 y versiones posteriores.
Plataforma de destino Universal
Encabezado ndis/nblapi.h (include ndis.h)
Library Ndis.lib
IRQL <= DISPATCH_LEVEL
Reglas de cumplimiento de DDI Irql_NetBuffer_Function(ndis)

Consulte también

NET_BUFFER