Compartir a través de


EVT_MBB_DEVICE_SEND_DEVICE_SERVICE_SESSION_DATA función de devolución de llamada (mbbcx.h)

La función de devolución de llamada de eventos EvtMbbDeviceSendServiceSessionData del controlador cliente envía los datos de sesión del servicio de dispositivo a su dispositivo módem.

Sintaxis

EVT_MBB_DEVICE_SEND_DEVICE_SERVICE_SESSION_DATA EvtMbbDeviceSendDeviceServiceSessionData;

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

Parámetros

Device

Identificador de un objeto de dispositivo de marco que el controlador cliente obtuvo de una llamada anterior a WdfDeviceCreate.

SessionId

Identificador de la sesión de servicio de dispositivo obtenida de una llamada anterior a MbbAdapterGetSessionId.

Data

Objeto WDFMEMORY que contiene los datos que se van a pasar al dispositivo.

Valor devuelto

None

Observaciones

MBBCx invoca la función de devolución de llamada EvtMbbDeviceSendServiceSessionData del controlador cliente cuando una aplicación envía datos DSS al dispositivo módem. Después de enviar los datos al dispositivo de forma asincrónica, el controlador cliente debe llamar a MbbDeviceSendServiceSessionDataComplete para que MBBCx pueda liberar la memoria asignada para los datos.

Ejemplo

En el ejemplo siguiente se muestra cómo un cliente podría enviar datos de DSS a su dispositivo módem. El control de errores se ha dejado fuera de este ejemplo para mayor brevedad y claridad.

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

Requisitos

Requisito Value
Cliente mínimo compatible Windows 10, versión 1809
Plataforma de destino Universal
Versión mínima de KMDF 1.27
Encabezado mbbcx.h
IRQL PASSIVE_LEVEL