Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
La funzione di callback di un driver client EvtMbbDeviceSendMbimFragment 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 per 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 un EvtMbbDeviceSendMbimFragment funzione di callback chiamando MbbDeviceInitialize.
Il framework MBBCx chiama questa funzione di callback quando vuole eseguire un comando nel formato di un messaggio di controllo MBIM al driver client. Se le dimensioni del messaggio di controllo MBIM sono maggiori delle dimensioni massime del frammento impostate 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 che il dispositivo ha accettato correttamente la richiesta di controllo o si è verificata una 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);
}
}
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Windows 10, versione 1809 |
piattaforma di destinazione | Universale |
versione minima di KMDF | 1.27 |
intestazione | mbbcx.h |
IRQL | <= DISPATCH_LEVEL |