EVT_MBB_DEVICE_SEND_MBIM_FRAGMENT回调函数 (mbbcx.h)

客户端驱动程序的 EvtMbbDeviceSendMbimFragment 事件回调函数指示其设备执行 MBIM 控制消息指定的任务。 此回调函数等效于 MBIM 规范中定义的 SendEncapsulatedCommand 请求。

语法

EVT_MBB_DEVICE_SEND_MBIM_FRAGMENT EvtMbbDeviceSendMbimFragment;

void EvtMbbDeviceSendMbimFragment(
  WDFDEVICE Device,
  MBBREQUEST SendRequest
)
{...}

参数

Device

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

SendRequest

框架对象的句柄,表示向设备发送碎片 MBIM 消息的请求。

返回值

备注

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

当 MBBCx 框架要以 MBIM 控制消息的格式向客户端驱动程序发出命令时,它将调用此回调函数。 如果 MBIM 控件消息的大小大于客户端驱动程序在 MBB_DEVICE_MBIM_PARAMETERS 结构中设置的最大片段大小,则 MBBCx 框架会将 MBIM 控制消息拆分为多个分段消息,并为每个分段消息调用此回调函数一次。

若要获取正在发送的实际 MBIM 消息片段,客户端驱动程序应调用 MbbRequestGetBuffer 以获取存储 MBIM 消息片段的缓冲区。 在其设备成功接受控制请求或发生任何故障条件后,客户端驱动程序必须通过异步或同步调用 MbbRequestComplete 向 MBBCx 确认这一点。

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

示例

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

VOID
EvtMbbDeviceSendMbimFragment(
    WDFDEVICE  Device,
    MBBREQUEST SendRequest
)
{
    // The client driver-specified framework object context
    PMY_DEVICE_CONTEXT myContext = GetMyDeviceContext(Device);

    size_t bufferSize = 0;
    PVOID buffer = MbbRequestGetBuffer(SendRequest, &bufferSize);

    // This client driver example uses asynchronous completion
    auto myDeviceSendCompletionRoutine = [](MBBREQUEST SendRequest, NTSTATUS NtStatus)
    {
        //Acknowledge back to MBBCx
        MbbRequestComplete(SendRequest, NtStatus);
    };

    // The client driver-specified function call into its device
    NTSTATUS sendStatus = MyDeviceAsyncSend(

        // The client driver-specific handle
        myContext->MyDeviceHandle,

        // The context for completion
        SendRequest,

        // MBIM message               
        buffer,

        // MBIM message size
        bufferSize,   

        // Can be used for logging purpose, for example              
        MbbRequestGetActivityId(SendRequest), 

        // The client driver-specific completion routine
        myDeviceSendCompletionRoutine);

    if (sendStatus != STATUS_PENDING)
    {
        // Acknowledge back to MBBCx
        myDeviceSendCompletionRoutine(
            SendRequest,
            sendStatus);
    }
}

要求

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