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 di dispositivo non specificato.

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 sycnchronously.
    //
    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