共用方式為


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
目標平臺 普遍
最低 KMDF 版本 1.27
標頭 mbbcx.h
IRQL PASSIVE_LEVEL