EVT_MBB_DEVICE_RECEIVE_MBIM_FRAGMENT fonction de rappel (mbbcx.h)
La fonction de rappel de l’événement EvtMbbDeviceReceiveMbimFragment d’un 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 pour un objet d’appareil framework que le pilote client a obtenu à partir d’un appel précédent à WdfDeviceCreate.
ReceiveRequest
Handle de l’objet framework qui représente la demande de réception d’un message MBIM fragmenté à partir de l’appareil.
Valeur de retour
None
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 qu’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, il doit fractionner ce message de réponse en plusieurs messages fragmentés, comme décrit dans la spécification MBIM. En cas de fragmentation, MBBCx continue d’appeler cette fonction de rappel, une fois par fragment, jusqu’à ce que tous les fragments du message MBIM de réponse soient reçus.
Pour accéder à l’espace tampon 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 effectivement renseigné. 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 en dehors de cet exemple pour des raisons de concision et de 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);
}
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 10, version 1809 |
Plateforme cible | Universal |
Version KMDF minimale | 1,27 % |
En-tête | mbbcx.h |
IRQL | PASSIVE_LEVEL |