Compartilhar via


Função NdisCopyFromNetBufferToNetBuffer (ndis/nblapi.h)

Chame a função NdisCopyFromNetBufferToNetBuffer para copiar dados de uma estrutura de NET_BUFFER de origem para uma estrutura de NET_BUFFER de destino.

Sintaxe

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

Um ponteiro para um destino alocado anteriormente NET_BUFFER estrutura.

[in] DestinationOffset

O deslocamento de bytes dentro do destino NET_BUFFER estrutura na qual começar a gravar os dados copiados. Para obter mais informações sobre DestinationOffset, consulte a seção Comentários a seguir.

[in] BytesToCopy

O número de bytes a serem copiados.

[in] Source

Um ponteiro para uma estrutura de NET_BUFFER de origem alocada anteriormente.

[in] SourceOffset

O deslocamento de bytes dentro da estrutura de NET_BUFFER de origem na qual começar a copiar os dados. Para obter mais informações sobre SourceOffset, consulte a seção Comentários a seguir.

[out] BytesCopied

Um ponteiro para a variável fornecida pelo chamador na qual essa função retorna o número de bytes realmente copiados. Esse número pode ser menor que o valor de BytesToCopy se a origem ficar sem dados ou o destino ficar sem espaço.

Retornar valor

NdisCopyFromNetBufferToNetBuffer retorna um dos seguintes valores de status:

Código de retorno Descrição
NDIS_STATUS_SUCCESS
A operação de cópia foi concluída com êxito.
NDIS_STATUS_RESOURCES
A operação de cópia falhou devido a recursos insuficientes.

Comentários

O chamador de NdisCopyFromNetBufferToNetBuffer aloca o destino NET_BUFFER estrutura e, possivelmente, a estrutura de NET_BUFFER de origem também. Os MDLs da estrutura de NET_BUFFER de destino devem ter espaço suficiente para receber os dados.

Se a estrutura de NET_BUFFER de origem ficar sem dados ou o destino NET_BUFFER estrutura ficar sem espaço antes que o número especificado de bytes seja copiado, a operação de cópia será interrompida. Em ambos os casos, NdisCopyFromNetBufferToNetBuffer retorna o número de bytes copiados com êxito da origem para a estrutura de NET_BUFFER de destino.

O chamador deve garantir que os valores CurrentMdlOffset e CurrentMdl estejam corretos nas estruturas de origem e destino NET_BUFFER. O NDIS não altera os membros no NET_BUFFER de destino. O chamador deve atualizar os valores DataLength, DataOffset e CurrentMdlOffset no destino NET_BUFFER após o retorno de NdisCopyFromNetBufferToNetBuffer .

O NDIS usa os deslocamentos nos parâmetros DestionationOffset e SourceOffset de NdisCopyFromNetBufferToNetBuffer como deslocamentos do deslocamento de dados atual. Por exemplo, se o valor CurrentMdlOffset no destino NET_BUFFER for x e DestinationOffset for y, o NDIS copiará os dados para o destino NET_BUFFER em um deslocamento x+ y na memória que o valor CurrentMdl descreve. Regras semelhantes se aplicam ao CurrentMdlOffset no NET_BUFFER de origem e ao valor SourceOffset .

Requisitos

Requisito Valor
Cliente mínimo com suporte Com suporte no NDIS 6.0 e posterior.
Plataforma de Destino Universal
Cabeçalho ndis/nblapi.h (inclua ndis.h)
Biblioteca Ndis.lib
IRQL <= DISPATCH_LEVEL
Regras de conformidade de DDI Irql_NetBuffer_Function(ndis)

Confira também

NET_BUFFER