EVT_MBB_DEVICE_SEND_DEVICE_SERVICE_SESSION_DATA Rückruffunktion (mbbcx.h)

Die EvtMbbDeviceSendServiceSessionData-Ereignisrückruffunktion eines Clienttreibers sendet Gerätedienstsitzungsdaten an das Modemgerät.

Syntax

EVT_MBB_DEVICE_SEND_DEVICE_SERVICE_SESSION_DATA EvtMbbDeviceSendDeviceServiceSessionData;

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

Parameter

Device

Ein Handle für ein Framework-Geräteobjekt, das der Clienttreiber aus einem vorherigen Aufruf von WdfDeviceCreate abgerufen hat.

SessionId

Die ID der Gerätedienstsitzung, die von einem vorherigen Aufruf von MbbAdapterGetSessionId abgerufen wurde.

Data

Ein WDFMEMORY-Objekt, das die Daten enthält, die an das Gerät übergeben werden sollen.

Rückgabewert

Keine

Bemerkungen

MBBCx ruft die EvtMbbDeviceSendServiceSessionData-Rückruffunktion eines Clienttreibers auf, wenn eine Anwendung DSS-Daten an das Modemgerät sendet. Nach dem asynchronen Senden der Daten an das Gerät muss der Clienttreiber MbbDeviceSendServiceSessionDataComplete aufrufen, damit MBBCx den für die Daten zugewiesenen Arbeitsspeicher freigeben kann.

Beispiel

Das folgende Beispiel zeigt, wie ein Client DSS-Daten an sein Modemgerät senden kann. Die Fehlerbehandlung wurde in diesem Beispiel aus Gründen der Kürze und Klarheit nicht behandelt.

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);
}

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 10, Version 1809
Zielplattform Universell
KMDF-Mindestversion 1,27
Kopfzeile mbbcx.h
IRQL PASSIVE_LEVEL