EVT_MBB_DEVICE_RECEIVE_MBIM_FRAGMENT fonction de rappel (mbbcx.h)
La fonction de rappel d’événement EvtMbbDeviceReceiveMbimFragment pilote client fournit le message de réponse retourné par son appareil en réponse à un message de contrôle MBIM précédent envoyé à partir de MBBCx. Cette fonction de rappel est l’équivalent de la requête GetEncapsulatedResponse définie dans la spécification MBIM.
Syntaxe
EVT_MBB_DEVICE_RECEIVE_MBIM_FRAGMENT EvtMbbDeviceReceiveMbimFragment;
void EvtMbbDeviceReceiveMbimFragment(
WDFDEVICE Device,
MBBREQUEST ReceiveRequest
)
{...}
Paramètres
Device
Handle vers un objet d’appareil framework que le pilote client obtenu à partir d’un appel précédent à WdfDeviceCreate.
ReceiveRequest
Handle vers l’objet framework qui représente la demande de réception d’un message MBIM fragmenté de l’appareil.
Valeur de retour
Aucun
Remarques
Un pilote client MBBCx doit inscrire une fonction de rappel EvtMbbDeviceReceiveMbimFragment en appelant MbbDeviceInitialize.
L’infrastructure MBBCx appelle cette fonction de rappel après avoir été avertie par le pilote client que un message MBIM est disponible à partir de l’appareil, soit en réponse à une demande de message de contrôle MBIM précédente de l’infrastructure, soit en tant qu’événement d’appareil non sollicité.
Dans cette fonction de rappel, le pilote client place le message MBIM de réponse dans l’espace tampon pré-alloué par l’infrastructure MBBCx. Si la taille d’un message de réponse unique est supérieure à la taille de la mémoire tampon pré-allouée, elle doit fractionner ce message de réponse en plusieurs messages fragmentés, comme décrit dans la spécification MBIM. Lorsque la fragmentation se produit, MBBCx continue à appeler cette fonction de rappel, une fois par fragment, jusqu’à ce que tous les fragments du message MBIM de réponse ait été reçu.
Pour accéder à l’espace tampon pré-alloué et à sa taille, le pilote client doit appeler MbbRequestGetBuffer. Une fois que le pilote client remplit cet espace tampon avec le message de réponse ou un fragment du message de réponse, il doit appeler MbbRequestCompleteWithInformation avec le nombre d’octets en cours de remplissage. Cette opération peut être effectuée de manière asynchrone ou synchrone.
Pour plus d’informations, consultez Gestion des messages de contrôle MBIM.
Exemple
La gestion des erreurs a été laissée hors de cet exemple pour la concision et la clarté.
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);
}
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Windows 10, version 1809 |
plateforme cible | Universel |
version minimale de KMDF | 1.27 |
d’en-tête | mbbcx.h |
IRQL | PASSIVE_LEVEL |