Condividi tramite


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