Partager via


EVT_MBB_DEVICE_SEND_DEVICE_SERVICE_SESSION_DATA fonction de rappel (mbbcx.h)

La fonction de rappel d’événements EvtMbbDeviceSendServiceSessionData du pilote client envoie les données de session de service d’appareil à son appareil modem.

Syntaxe

EVT_MBB_DEVICE_SEND_DEVICE_SERVICE_SESSION_DATA EvtMbbDeviceSendDeviceServiceSessionData;

void EvtMbbDeviceSendDeviceServiceSessionData(
  WDFDEVICE Device,
  DSS_SESSION_ID SessionId,
  WDFMEMORY Data
)
{...}

Paramètres

Device

Handle vers un objet d’appareil framework que le pilote client obtenu à partir d’un appel précédent à WdfDeviceCreate.

SessionId

ID de la session de service d’appareil obtenue à partir d’un appel précédent à MbbAdapterGetSessionId.

Data

Objet WDFMEMORY contenant les données à transmettre à l’appareil.

Valeur de retour

Aucun

Remarques

MBBCx appelle la fonction de rappel evtMbbDeviceSendServiceSessionData du pilote client lorsqu’une application envoie des données DSS au périphérique modem. Après avoir envoyé les données à l’appareil de façon asynchrone, le pilote client doit appeler MbbDeviceSendServiceSessionDataComplete afin que MBBCx puisse libérer la mémoire allouée pour les données.

Exemple

L’exemple suivant montre comment un client peut envoyer des données DSS à son appareil modem. La gestion des erreurs a été laissée hors de cet exemple pour la concision et la clarté.

VOID
MyEvtMbbDeviceSendServiceSessionData(
    _In_ WDFDEVICE Device,
    _In_ DSS_SESSION_ID SessionId,
    _In_ WDFMEMORY Data
)
{
    // Get the device context and NETADAPTER context
    PMY_DEVICE_CONTEXT deviceContext = GetMyDeviceContext(Device);

    // Set up a driver-defined DSS packet structure
    PMY_DSS_PACKET packet = NULL;

    // Get the data to send from the WDFMEMORY object
    size_t bufferSize = 0;
    PVOID buffer = WdfMemoryGetBuffer(Data, 
                                      &bufferSize);

    // Populate the DSS packet
    packet = MyAllocateDssPacket(Data,
                                buffer,
                                bufferSize,
                                SessionId);

    // Send the data asynchronously, which returns STATUS_PENDING when successful
    status = MyModemBusWriteData(deviceContext->BusHandle,
                                 packet);

    // Increment count of sent packets
    deviceContext->DSSPacketsSentCount++;

    // Clean up the memory
    MbbDeviceSendServiceSessionDataComplete(Data,
                                            status);
    MyCleanupDssPacket(packet);
}

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