EVT_MBB_DEVICE_SEND_DEVICE_SERVICE_SESSION_DATA回调函数 (mbbcx.h)

客户端驱动程序的 EvtMbbDeviceSendServiceSessionData 事件回调函数将设备服务会话数据向下发送到其调制解调器设备。

语法

EVT_MBB_DEVICE_SEND_DEVICE_SERVICE_SESSION_DATA EvtMbbDeviceSendDeviceServiceSessionData;

void EvtMbbDeviceSendDeviceServiceSessionData(
  WDFDEVICE Device,
  DSS_SESSION_ID SessionId,
  WDFMEMORY Data
)
{...}

参数

Device

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

SessionId

从上一次调用 MbbAdapterGetSessionId 获取的设备服务会话的 ID。

Data

包含要传递到设备的数据的 WDFMEMORY 对象。

返回值

备注

当应用程序将 DSS 数据向下发送到调制解调器设备时,MBBCx 调用客户端驱动程序的 EvtMbbDeviceSendServiceSessionData 回调函数。 将数据异步发送到设备后,客户端驱动程序必须调用 MbbDeviceSendServiceSessionDataComplete ,以便 MBBCx 可以释放为数据分配的内存。

示例

以下示例演示客户端如何将 DSS 数据向下发送到其调制解调器设备。 为了简洁明了,此示例中已排除错误处理。

VOID
MyEvtMbbDeviceSendServiceSessionData(
    _In_ WDFDEVICE Device,
    _In_ DSS_SESSION_ID SessionId,
    _In_ WDFMEMORY Data
)
{
    // Get the device context and NETADAPTER context
    PMY_DEVICE_CONTEXT deviceContext = GetMyDeviceContext(Device);

    // Set up a driver-defined DSS packet structure
    PMY_DSS_PACKET packet = NULL;

    // Get the data to send from the WDFMEMORY object
    size_t bufferSize = 0;
    PVOID buffer = WdfMemoryGetBuffer(Data, 
                                      &bufferSize);

    // Populate the DSS packet
    packet = MyAllocateDssPacket(Data,
                                buffer,
                                bufferSize,
                                SessionId);

    // Send the data asynchronously, which returns STATUS_PENDING when successful
    status = MyModemBusWriteData(deviceContext->BusHandle,
                                 packet);

    // Increment count of sent packets
    deviceContext->DSSPacketsSentCount++;

    // Clean up the memory
    MbbDeviceSendServiceSessionDataComplete(Data,
                                            status);
    MyCleanupDssPacket(packet);
}

要求

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