Compartilhar via


FN_VMB_PACKET_SEND_WITH_EXTERNAL_MDL função de retorno de chamada (vmbuskernelmodeclientlibapi.h)

[Algumas informações relacionam-se ao produto de pré-lançamento, o qual poderá ser substancialmente modificado antes do lançamento comercial. A Microsoft não fornece nenhuma garantia, expressa ou implícita, com relação às informações fornecidas aqui.]

A função VmbPacketSendWithExternalMdl envia os dados em um buffer de pacotes ou MDL (Lista de Descritores de Memória) de dados externos. A função associa esses dados ao objeto de pacote VMBus, que representa o pacote durante todo o tempo de vida da transação.

Sintaxe

FN_VMB_PACKET_SEND_WITH_EXTERNAL_MDL FnVmbPacketSendWithExternalMdl;

NTSTATUS FnVmbPacketSendWithExternalMdl(
  __drv_aliasesMem VMBPACKET PacketObject,
  PVOID Buffer,
  UINT32 BufferLength,
  PMDL ExternalDataMdl,
  UINT32 MdlOffset,
  UINT32 MdlLength,
  UINT32 Flags
)
{...}

Parâmetros

PacketObject

Um identificador para o objeto de pacote VMBus.

Buffer

Um buffer que contém o pacote de comando enviado por meio do buffer de anéis VMBus.

BufferLength

O comprimento, em bytes, do buffer no parâmetro Buffer .

ExternalDataMdl

Um MDL que descreve um buffer de dados associado ao pacote.

MdlOffset

O deslocamento do buffer descrito pelo MDL em que os dados são iniciados.

MdlLength

O comprimento do sub-buffer a ser enviado. Use 0 para todo o MDL.

Flags

Sinalizadores. Os seguintes sinalizadores são pertinentes:

Valor Significado
VMBUS_CHANNEL_FORMAT_FLAG_WAIT_FOR_COMPLETION
Esse pacote não pode ser considerado completo e seus recursos não podem ser liberados até que um pacote de conclusão volte do ponto de extremidade oposto. Esse sinalizador deve ser definido.
VMBUS_CHANNEL_FORMAT_FLAG_FORCE_MDL_LENGTH
Sempre use MdlLength para o comprimento do MDL de dados externos, mesmo que esse comprimento seja maior que o campo ByteCount do MDL. Isso só permite exceder o comprimento do MDL arredondando até um limite de página. Se esse sinalizador for definido, somente o primeiro MDL na cadeia de MDL será usado.
VMBUS_CHANNEL_FORMAT_FLAG_PAGED_BUFFER
O buffer embutido é paginado e deve ser tratado adequadamente, o que significa que ele deve ser copiado antes de entrar no nível de DPC. Investigar buffers no modo de usuário ou lidar com violações de acesso é responsabilidade do chamador.

Retornar valor

Retorna STATUS_SUCCESS se a operação for bem-sucedida ou um código de erro NTSTATUS apropriado caso contrário.

Comentários

Essa função é diferente da função VmbPacketSend , pois permite passar um deslocamento de MDL e um comprimento de MDL.

Importante

Essa função é chamada por meio da interface KMCL (Biblioteca de Clientes do Modo Kernel do VMBus), fornecida pelo driver de barramento Vmbkmcl.sys. Essa é uma função de cliente acessada da estrutura KMCL_CLIENT_INTERFACE_V1 .

Para obter mais informações, consulte a seção Comentários do KMCL_CLIENT_INTERFACE_V1.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 10, versão 1803
Cabeçalho vmbuskernelmodeclientlibapi.h

Confira também

VmbPacketSend