EVT_MBB_DEVICE_SEND_DEVICE_SERVICE_SESSION_DATA fungsi panggilan balik (mbbcx.h)

Fungsi panggilan balik peristiwa EvtMbbDeviceSendServiceSessionData driver klien mengirimkan data sesi layanan perangkat ke perangkat modemnya.

Sintaks

EVT_MBB_DEVICE_SEND_DEVICE_SERVICE_SESSION_DATA EvtMbbDeviceSendDeviceServiceSessionData;

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

Parameter

Device

Handel ke objek perangkat kerangka kerja yang diperoleh driver klien dari panggilan sebelumnya ke WdfDeviceCreate.

SessionId

ID sesi layanan perangkat yang diperoleh dari panggilan sebelumnya ke MbbAdapterGetSessionId.

Data

Objek WDFMEMORY yang berisi data untuk diteruskan ke perangkat.

Nilai kembali

Tidak ada

Keterangan

MBBCx memanggil fungsi panggilan balik EvtMbbDeviceSendSendServiceSessionData driver klien saat aplikasi mengirim data DSS ke perangkat modem. Setelah mengirim data ke perangkat secara asinkron, driver klien harus memanggil MbbDeviceSendServiceSessionDataComplete sehingga MBBCx dapat membebaskan memori yang dialokasikan untuk data.

Contoh

Contoh berikut menunjukkan bagaimana klien mungkin mengirim data DSS ke perangkat modemnya. Penanganan kesalahan telah dibiarkan dari contoh ini untuk keringkasan dan kejelasan.

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);
}

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 10, version 1809
Target Platform Universal
Versi KMDF minimum 1.27
Header mbbcx.h
IRQL PASSIVE_LEVEL