EVT_MBB_DEVICE_SEND_MBIM_FRAGMENT funzione di callback (mbbcx.h)
La funzione di callback dell'evento EvtMbbDeviceSendMbimFragment del driver client indica al dispositivo di eseguire l'attività specificata dal messaggio di controllo MBIM. Questa funzione di callback è l'equivalente della richiesta SendEncapsulatedCommand definita nella specifica MBIM.
Sintassi
EVT_MBB_DEVICE_SEND_MBIM_FRAGMENT EvtMbbDeviceSendMbimFragment;
void EvtMbbDeviceSendMbimFragment(
WDFDEVICE Device,
MBBREQUEST SendRequest
)
{...}
Parametri
Device
Handle a un oggetto dispositivo framework il driver client ottenuto da una chiamata precedente a WdfDeviceCreate.
SendRequest
Handle per l'oggetto framework che rappresenta la richiesta di inviare un messaggio MBIM frammentato al dispositivo.
Valore restituito
nessuno
Osservazioni
Un driver client MBBCx deve registrare una funzione di callback EvtMbbDeviceSendMbimFragment chiamando MbbDeviceInitialize.
Il framework MBBCx chiama questa funzione di callback quando vuole emettere un comando nel formato di un messaggio di controllo MBIM al driver client. Se la dimensione del messaggio di controllo MBIM è maggiore della dimensione massima del frammento impostata dal driver client nella struttura MBB_DEVICE_MBIM_PARAMETERS , il framework MBBCx suddivide il messaggio di controllo MBIM in più messaggi frammentati e chiama questa funzione di callback una volta per ogni messaggio frammentato.
Per ottenere il frammento di messaggio MBIM effettivo inviato, il driver client deve chiamare MbbRequestGetBuffer per ottenere il buffer in cui è archiviato il frammento di messaggio MBIM. Dopo aver accettato correttamente la richiesta di controllo o qualsiasi condizione di errore, il driver client deve confermarlo a MBBCx chiamando MbbRequestComplete in modo asincrono o sincrono.
Per altre informazioni, vedere Gestione dei messaggi di controllo MBIM.
Esempio
Il codice di gestione degli errori è stato lasciato fuori da questo esempio per brevità e chiarezza.
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);
}
}
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 10, versione 1809 |
Piattaforma di destinazione | Universale |
Versione KMDF minima | 1.27 |
Intestazione | mbbcx.h |
IRQL | <= DISPATCH_LEVEL |