EVT_MBB_DEVICE_RECEIVE_MBIM_FRAGMENT funzione di callback (mbbcx.h)
La funzione di callback dell'evento EvtMbbDeviceReceiveMbimFragment di un driver client fornisce il messaggio di risposta restituito dal dispositivo in risposta a un messaggio di controllo MBIM precedente inviato da MBBCx. Questa funzione di callback è l'equivalente della richiesta GetEncapsulatedResponse definita nella specifica MBIM.
Sintassi
EVT_MBB_DEVICE_RECEIVE_MBIM_FRAGMENT EvtMbbDeviceReceiveMbimFragment;
void EvtMbbDeviceReceiveMbimFragment(
WDFDEVICE Device,
MBBREQUEST ReceiveRequest
)
{...}
Parametri
Device
Handle per un oggetto dispositivo framework il driver client ottenuto da una chiamata precedente a WdfDeviceCreate.
ReceiveRequest
Handle per l'oggetto framework che rappresenta la richiesta di ricevere un messaggio MBIM frammentato dal dispositivo.
Valore restituito
nessuno
Osservazioni
Un driver client MBBCx deve registrare una funzione di callback EvtMbbDeviceReceiveMbimFragment chiamando MbbDeviceInitialize.
Il framework MBBCx chiama questa funzione di callback dopo che il driver client riceve una notifica che un messaggio MBIM è disponibile dal dispositivo, come risposta a una richiesta di messaggio di controllo MBIM precedente dal framework o come evento del dispositivo non richiesto.
In questa funzione di callback, il driver client inserisce il messaggio MBIM di risposta nello spazio buffer preallocato dal framework MBBCx. Se le dimensioni di un singolo messaggio di risposta sono maggiori delle dimensioni del buffer preallocato e deve suddividere il messaggio di risposta in più messaggi frammentati, come descritto nella specifica MBIM. Quando si verifica la frammentazione, MBBCx continuerà a chiamare questa funzione di callback, una volta per frammento, fino a quando non vengono ricevuti tutti i frammenti del messaggio MBIM di risposta.
Per accedere allo spazio buffer preallocato e alle relative dimensioni, il driver client deve chiamare MbbRequestGetBuffer. Dopo che il driver client riempie questo spazio buffer con il messaggio di risposta o un frammento del messaggio di risposta, deve chiamare MbbRequestCompleteWithInformation con il numero di byte effettivamente riempiti. Questa operazione può essere eseguita in modo asincrono o sincrono.
Per altre informazioni, vedere Gestione dei messaggi di controllo MBIM.
Esempio
La gestione degli errori è stata eliminata da questo esempio per brevità e chiarezza.
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 synchronously.
//
memset(buffer, '*', bufferSize);
filledSize = bufferSize;
MbbRequestCompleteWithInformation(ReceiveRequest,
STATUS_SUCCESS,
filledSize);
}
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 10, versione 1809 |
Piattaforma di destinazione | Universale |
Versione KMDF minima | 1.27 |
Intestazione | mbbcx.h |
IRQL | PASSIVE_LEVEL |