EVT_MBB_DEVICE_RECEIVE_MBIM_FRAGMENT função de retorno de chamada (mbbcx.h)
A função de retorno de chamada de evento EvtMbbDeviceReceiveMbimFragment de um driver de cliente fornece a mensagem de resposta retornada de seu dispositivo em resposta a uma mensagem de controle MBIM anterior enviada do MBBCx. Essa função de retorno de chamada é equivalente à solicitação GetEncapsulatedResponse definida na especificação do MBIM.
Sintaxe
EVT_MBB_DEVICE_RECEIVE_MBIM_FRAGMENT EvtMbbDeviceReceiveMbimFragment;
void EvtMbbDeviceReceiveMbimFragment(
WDFDEVICE Device,
MBBREQUEST ReceiveRequest
)
{...}
Parâmetros
Device
Um identificador para um objeto de dispositivo de estrutura que o driver cliente obteve de uma chamada anterior para WdfDeviceCreate.
ReceiveRequest
Um identificador para o objeto framework que representa a solicitação para receber uma mensagem MBIM fragmentada do dispositivo.
Retornar valor
Nenhum
Comentários
Um driver cliente MBBCx deve registrar uma função de retorno de chamada EvtMbbDeviceReceiveMbimFragment chamando MbbDeviceInitialize.
A estrutura MBBCx chama essa função de retorno de chamada depois de ser notificada pelo driver cliente de que uma mensagem MBIM está disponível no dispositivo, seja como uma resposta a uma solicitação de mensagem de controle MBIM anterior da estrutura ou como um evento de dispositivo não solicitado.
Nessa função de retorno de chamada, o driver do cliente coloca a mensagem MBIM de resposta no espaço de buffer pré-alocado pela estrutura MBBCx. Se o tamanho de uma única mensagem de resposta for maior que o tamanho do buffer pré-alocado e, em seguida, ele deverá dividir essa mensagem de resposta em várias mensagens fragmentadas, conforme descrito na especificação do MBIM. Quando a fragmentação ocorrer, o MBBCx continuará a chamar essa função de retorno de chamada, uma vez por fragmento, até que todos os fragmentos da mensagem MBIM de resposta sejam recebidos.
Para acessar o espaço de buffer pré-alocado e seu tamanho, o driver cliente deve chamar MbbRequestGetBuffer. Depois que o driver do cliente preencher esse espaço de buffer com a mensagem de resposta ou um fragmento da mensagem de resposta, ele deverá chamar MbbRequestCompleteWithInformation com o número de bytes realmente sendo preenchidos. Isso pode ser feito de forma assíncrona ou síncrona.
Para obter mais informações, consulte Manipulando mensagens de controle MBIM.
Exemplo
O tratamento de erros foi deixado de fora deste exemplo para obter brevidade e clareza.
VOID
EvtMbbDeviceReceiveMbimFragment(
WDFDEVICE Device,
MBBREQUEST ReceiveRequest
)
{
size_t filledSize = 0;
size_t bufferSize = 0;
PVOID buffer = MbbRequestGetBuffer(ReceiveRequest, &bufferSize);
//
// Write the response MBIM message into the buffer.
// This example uses memset as an illustration of how
// it can being completed synchronously.
//
memset(buffer, '*', bufferSize);
filledSize = bufferSize;
MbbRequestCompleteWithInformation(ReceiveRequest,
STATUS_SUCCESS,
filledSize);
}
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 10, versão 1809 |
Plataforma de Destino | Universal |
Versão mínima do KMDF | 1.27 |
Cabeçalho | mbbcx.h |
IRQL | PASSIVE_LEVEL |