共用方式為


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 取得的裝置服務會話標識碼。

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
目標平台 Universal
最小 KMDF 版本 1.27
標頭 mbbcx.h
IRQL PASSIVE_LEVEL