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 synchronously.
//
memset(buffer, '*', bufferSize);
filledSize = bufferSize;
MbbRequestCompleteWithInformation(ReceiveRequest,
STATUS_SUCCESS,
filledSize);
}
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 10 版本 1809 |
目标平台 | 通用 |
最低 KMDF 版本 | 1.27 |
标头 | mbbcx.h |
IRQL | PASSIVE_LEVEL |