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 |
---|---|
|
La operación de copia se completó correctamente. |
|
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) |