EVT_MBB_DEVICE_SEND_MBIM_FRAGMENT fungsi panggilan balik (mbbcx.h)
Fungsi panggilan balik peristiwa EvtMbbDeviceSendMbimFragment driver klien menginstruksikan perangkatnya untuk melakukan tugas yang ditentukan oleh pesan kontrol MBIM. Fungsi panggilan balik ini setara dengan permintaan SendEncapsulatedCommand yang ditentukan dalam spesifikasi MBIM.
Sintaks
EVT_MBB_DEVICE_SEND_MBIM_FRAGMENT EvtMbbDeviceSendMbimFragment;
void EvtMbbDeviceSendMbimFragment(
WDFDEVICE Device,
MBBREQUEST SendRequest
)
{...}
Parameter
Device
Handel ke objek perangkat kerangka kerja yang diperoleh driver klien dari panggilan sebelumnya ke WdfDeviceCreate.
SendRequest
Handel ke objek kerangka kerja yang mewakili permintaan untuk mengirim pesan MBIM terfragmentasi ke perangkat.
Nilai kembali
Tidak ada
Keterangan
Driver klien MBBCx harus mendaftarkan fungsi panggilan balik EvtMbbDeviceSendMbimFragment dengan memanggil MbbDeviceInitialize.
Kerangka kerja MBBCx memanggil fungsi panggilan balik ini ketika ingin mengeluarkan perintah dalam format pesan kontrol MBIM ke driver klien. Jika ukuran pesan kontrol MBIM lebih besar dari ukuran fragmen maksimum yang ditetapkan oleh driver klien dalam struktur MBB_DEVICE_MBIM_PARAMETERS , kerangka kerja MBBCx membagi pesan kontrol MBIM menjadi beberapa pesan terfragmentasi dan memanggil fungsi panggilan balik ini sekali per pesan terfragmentasi.
Untuk mendapatkan fragmen pesan MBIM aktual yang dikirim, driver klien harus memanggil MbbRequestGetBuffer untuk mendapatkan buffer tempat fragmen pesan MBIM disimpan. Setelah perangkatnya berhasil menerima permintaan kontrol, atau kondisi kegagalan apa pun telah terjadi, driver klien harus mengakui ini ke MBBCx dengan memanggil MbbRequestComplete baik secara asinkron atau sinkron.
Untuk informasi selengkapnya, lihat Menangani pesan kontrol MBIM.
Contoh
Kode penanganan kesalahan telah dibiarkan dari contoh ini untuk keringkasan dan kejelasan.
VOID
EvtMbbDeviceSendMbimFragment(
WDFDEVICE Device,
MBBREQUEST SendRequest
)
{
// The client driver-specified framework object context
PMY_DEVICE_CONTEXT myContext = GetMyDeviceContext(Device);
size_t bufferSize = 0;
PVOID buffer = MbbRequestGetBuffer(SendRequest, &bufferSize);
// This client driver example uses asynchronous completion
auto myDeviceSendCompletionRoutine = [](MBBREQUEST SendRequest, NTSTATUS NtStatus)
{
//Acknowledge back to MBBCx
MbbRequestComplete(SendRequest, NtStatus);
};
// The client driver-specified function call into its device
NTSTATUS sendStatus = MyDeviceAsyncSend(
// The client driver-specific handle
myContext->MyDeviceHandle,
// The context for completion
SendRequest,
// MBIM message
buffer,
// MBIM message size
bufferSize,
// Can be used for logging purpose, for example
MbbRequestGetActivityId(SendRequest),
// The client driver-specific completion routine
myDeviceSendCompletionRoutine);
if (sendStatus != STATUS_PENDING)
{
// Acknowledge back to MBBCx
myDeviceSendCompletionRoutine(
SendRequest,
sendStatus);
}
}
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows 10, version 1809 |
Target Platform | Universal |
Versi KMDF minimum | 1.27 |
Header | mbbcx.h |
IRQL | <= DISPATCH_LEVEL |
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk