Compartir a través de


EVT_MBB_DEVICE_RECEIVE_MBIM_FRAGMENT función de devolución de llamada (mbbcx.h)

La función de devolución de llamada de eventos EvtMbbDeviceReceiveMbimFragment de un controlador cliente proporciona el mensaje de respuesta devuelto desde su dispositivo en respuesta a un mensaje de control MBIM anterior enviado desde MBBCx. Esta función de devolución de llamada es el equivalente de la solicitud GetEncapsulatedResponse definida en la especificación MBIM.

Sintaxis

EVT_MBB_DEVICE_RECEIVE_MBIM_FRAGMENT EvtMbbDeviceReceiveMbimFragment;

void EvtMbbDeviceReceiveMbimFragment(
  WDFDEVICE Device,
  MBBREQUEST ReceiveRequest
)
{...}

Parámetros

Device

Identificador de un objeto de dispositivo de marco que el controlador cliente obtuvo de una llamada anterior a WdfDeviceCreate.

ReceiveRequest

Identificador del objeto framework que representa la solicitud para recibir un mensaje MBIM fragmentado del dispositivo.

Valor devuelto

None

Observaciones

Un controlador cliente MBBCx debe registrar una función de devolución de llamada EvtMbbDeviceReceiveMbimFragment llamando a MbbDeviceInitialize.

El marco MBBCx llama a esta función de devolución de llamada después de recibir una notificación por parte del controlador cliente de que un mensaje MBIM está disponible desde el dispositivo, ya sea como respuesta a una solicitud de mensaje de control MBIM anterior del marco o como un evento de dispositivo no solicitado.

En esta función de devolución de llamada, el controlador cliente coloca el mensaje MBIM de respuesta en el espacio de búfer asignado previamente por el marco MBBCx. Si el tamaño de un único mensaje de respuesta es mayor que el tamaño del búfer asignado previamente y, a continuación, debe dividir este mensaje de respuesta en varios mensajes fragmentados, como se describe en la especificación MBIM. Cuando se produzca la fragmentación, MBBCx seguirá llamando a esta función de devolución de llamada, una vez por fragmento, hasta que se hayan recibido todos los fragmentos del mensaje MBIM de respuesta.

Para acceder al espacio de búfer asignado previamente y su tamaño, el controlador de cliente debe llamar a MbbRequestGetBuffer. Una vez que el controlador de cliente rellena este espacio de búfer con el mensaje de respuesta o un fragmento del mensaje de respuesta, debe llamar a MbbRequestCompleteWithInformation con el número de bytes que se rellenan realmente. Esto se puede hacer de forma asincrónica o sincrónica.

Para obtener más información, consulte Control de mensajes de control MBIM.

Ejemplo

El control de errores se ha dejado fuera de este ejemplo para mayor brevedad y claridad.

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 Value
Cliente mínimo compatible Windows 10, versión 1809
Plataforma de destino Universal
Versión mínima de KMDF 1.27
Encabezado mbbcx.h
IRQL PASSIVE_LEVEL