EVT_MBB_DEVICE_RECEIVE_MBIM_FRAGMENT fungsi panggilan balik (mbbcx.h)

Fungsi panggilan balik peristiwa EvtMbbDeviceReceiveMbimFragment driver klien menyediakan pesan respons yang dikembalikan dari perangkatnya sebagai respons terhadap pesan kontrol MBIM sebelumnya yang dikirim dari MBBCx. Fungsi panggilan balik ini setara dengan permintaan GetEncapsulatedResponse yang ditentukan dalam spesifikasi MBIM.

Sintaks

EVT_MBB_DEVICE_RECEIVE_MBIM_FRAGMENT EvtMbbDeviceReceiveMbimFragment;

void EvtMbbDeviceReceiveMbimFragment(
  WDFDEVICE Device,
  MBBREQUEST ReceiveRequest
)
{...}

Parameter

Device

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

ReceiveRequest

Handel ke objek kerangka kerja yang mewakili permintaan untuk menerima pesan MBIM terfragmentasi dari perangkat.

Nilai kembali

Tidak ada

Keterangan

Driver klien MBBCx harus mendaftarkan fungsi panggilan balik EvtMbbDeviceReceiveMbimFragment dengan memanggil MbbDeviceInitialize.

Kerangka kerja MBBCx memanggil fungsi panggilan balik ini setelah diberi tahu oleh driver klien bahwa pesan MBIM tersedia dari perangkat, baik sebagai respons terhadap permintaan pesan kontrol MBIM sebelumnya dari kerangka kerja, atau sebagai peristiwa perangkat yang tidak disolikasi.

Dalam fungsi panggilan balik ini, driver klien menempatkan pesan MBIM respons ke dalam ruang buffer yang telah dialokasikan sebelumnya oleh kerangka kerja MBBCx. Jika ukuran satu pesan respons lebih besar dari ukuran buffer yang telah dialokasikan sebelumnya, dan kemudian harus membagi pesan respons ini menjadi beberapa pesan terfragmentasi seperti yang dijelaskan dalam spesifikasi MBIM. Ketika fragmentasi terjadi, MBBCx akan terus memanggil fungsi panggilan balik ini, sekali per fragmen, sampai semua fragmen pesan MBIM respons telah diterima.

Untuk mengakses ruang buffer yang telah dialokasikan sebelumnya dan ukurannya, driver klien harus memanggil MbbRequestGetBuffer. Setelah driver klien mengisi ruang buffer ini dengan pesan respons, atau fragmen pesan respons, driver klien harus memanggil MbbRequestCompleteWithInformation dengan jumlah byte yang benar-benar diisi. Ini dapat dilakukan baik secara asinkron atau sinkron.

Untuk informasi selengkapnya, lihat Menangani pesan kontrol MBIM.

Contoh

Penanganan kesalahan telah dibiarkan dari contoh ini untuk keringkasan dan kejelasan.

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 sycnchronously.
    //
    memset(buffer, '*', bufferSize);
    filledSize = bufferSize;

    MbbRequestCompleteWithInformation(ReceiveRequest,
        STATUS_SUCCESS,
        filledSize);
}

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