EVT_MBB_DEVICE_RECEIVE_MBIM_FRAGMENT回调函数 (mbbcx.h)

客户端驱动程序的 EvtMbbDeviceReceiveMbimFragment 事件回调函数提供从其设备返回的响应消息,以响应从 MBBCx 发送的上一个 MBIM 控制消息。 此回调函数等效于 MBIM 规范中定义的 GetEncapsulatedResponse 请求。

语法

EVT_MBB_DEVICE_RECEIVE_MBIM_FRAGMENT EvtMbbDeviceReceiveMbimFragment;

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

参数

Device

客户端驱动程序从上一次调用 WdfDeviceCreate 获取的框架设备对象的句柄。

ReceiveRequest

框架对象的句柄,表示从设备接收分段 MBIM 消息的请求。

返回值

备注

MBBCx 客户端驱动程序必须通过调用 MbbDeviceInitialize 注册 EvtMbbDeviceReceiveMbimFragment 回调函数。

MBBCx 框架在客户端驱动程序通知 MBIM 消息可从设备获取后调用此回调函数,以响应来自框架的上一个 MBIM 控制消息请求,或作为未分配的设备事件。

在此回调函数中,客户端驱动程序将响应 MBIM 消息放入 MBBCx 框架预先分配的缓冲区空间中。 如果单个响应消息的大小大于预分配的缓冲区的大小,则它必须将此响应消息拆分为多个分段消息,如 MBIM 规范中所述。 发生碎片时,MBBCx 将继续为每个片段调用此回调函数一次,直到收到响应 MBIM 消息的所有片段。

若要访问预先分配的缓冲区空间及其大小,客户端驱动程序应调用 MbbRequestGetBuffer。 客户端驱动程序用响应消息或响应消息的片段填充此缓冲区空间后,它必须使用实际填充的字节数调用 MbbRequestCompleteWithInformation 。 这可以异步或同步完成。

有关详细信息,请参阅 处理 MBIM 控制消息

示例

为了简洁明了,此示例中已排除错误处理。

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 sycnchronously.
    //
    memset(buffer, '*', bufferSize);
    filledSize = bufferSize;

    MbbRequestCompleteWithInformation(ReceiveRequest,
        STATUS_SUCCESS,
        filledSize);
}

要求

要求
最低受支持的客户端 Windows 10 版本 1809
目标平台 通用
最低 KMDF 版本 1.27
标头 mbbcx.h
IRQL PASSIVE_LEVEL