Share via


EVT_MBB_DEVICE_RECEIVE_MBIM_FRAGMENT Rückruffunktion (mbbcx.h)

Die EvtMbbDeviceReceiveMbimFragment-Ereignisrückruffunktion eines Clienttreibers stellt die Antwortnachricht bereit, die von seinem Gerät als Reaktion auf eine frühere MBIM-Steuerelementnachricht zurückgegeben wird, die von MBBCx gesendet wurde. Diese Rückruffunktion entspricht der getEncapsulatedResponse-Anforderung , die in der MBIM-Spezifikation definiert ist.

Syntax

EVT_MBB_DEVICE_RECEIVE_MBIM_FRAGMENT EvtMbbDeviceReceiveMbimFragment;

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

Parameter

Device

Ein Handle für ein Framework-Geräteobjekt, das der Clienttreiber aus einem vorherigen Aufruf von WdfDeviceCreate abgerufen hat.

ReceiveRequest

Ein Handle für das Frameworkobjekt, das die Anforderung darstellt, eine fragmentierte MBIM-Nachricht vom Gerät zu empfangen.

Rückgabewert

Keine

Bemerkungen

Ein MBBCx-Clienttreiber muss eine EvtMbbDeviceReceiveMbimFragment-Rückruffunktion registrieren, indem MbbDeviceInitialize aufgerufen wird.

Das MBBCx-Framework ruft diese Rückruffunktion auf, nachdem sie vom Clienttreiber benachrichtigt wurde, dass eine MBIM-Nachricht vom Gerät verfügbar ist, entweder als Antwort auf eine vorherige MBIM-Steuerelementmeldungsanforderung des Frameworks oder als nicht angefordertes Geräteereignis.

In dieser Rückruffunktion platziert der Clienttreiber die MBIM-Antwortnachricht in den Pufferraum, der vom MBBCx-Framework vorab zugewiesen wurde. Wenn die Größe einer einzelnen Antwortnachricht größer als die Größe des vorab zugewiesenen Puffers ist, muss diese Antwortnachricht wie in der MBIM-Spezifikation beschrieben in mehrere fragmentierte Nachrichten aufgeteilt werden. Wenn die Fragmentierung auftritt, ruft MBBCx diese Rückruffunktion weiterhin einmal pro Fragment auf, bis alle Fragmente der MBIM-Antwortnachricht empfangen wurden.

Um auf den vorab zugewiesenen Pufferraum und dessen Größe zuzugreifen, sollte der Clienttreiber MbbRequestGetBuffer aufrufen. Sobald der Clienttreiber diesen Pufferraum mit der Antwortnachricht oder einem Fragment der Antwortnachricht füllt, muss er MbbRequestCompleteWithInformation mit der Anzahl der tatsächlich gefüllten Bytes aufrufen. Dies kann entweder asynchron oder synchron erfolgen.

Weitere Informationen finden Sie unter Behandeln von MBIM-Steuerelementmeldungen.

Beispiel

Die Fehlerbehandlung wurde in diesem Beispiel aus Gründen der Kürze und Klarheit nicht behandelt.

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);
}

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 10, Version 1809
Zielplattform Universell
KMDF-Mindestversion 1,27
Kopfzeile mbbcx.h
IRQL PASSIVE_LEVEL