EVT_MBB_DEVICE_SEND_DEVICE_SERVICE_SESSION_DATA função de retorno de chamada (mbbcx.h)

A função de retorno de chamada de evento EvtMbbDeviceSendServiceSessionData de um driver de cliente envia dados de sessão do serviço de dispositivo para seu dispositivo modem.

Sintaxe

EVT_MBB_DEVICE_SEND_DEVICE_SERVICE_SESSION_DATA EvtMbbDeviceSendDeviceServiceSessionData;

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

Parâmetros

Device

Um identificador para um objeto de dispositivo de estrutura que o driver cliente obteve de uma chamada anterior para WdfDeviceCreate.

SessionId

A ID da sessão de serviço do dispositivo obtida de uma chamada anterior para MbbAdapterGetSessionId.

Data

Um objeto WDFMEMORY que contém os dados a serem passados para o dispositivo.

Retornar valor

Nenhum

Comentários

O MBBCx invoca a função de retorno de chamada EvtMbbDeviceSendServiceSessionData de um driver de cliente quando um aplicativo envia dados DSS para o dispositivo modem. Depois de enviar os dados para o dispositivo de forma assíncrona, o driver cliente deve chamar MbbDeviceSendServiceSessionDataComplete para que o MBBCx possa liberar a memória alocada para os dados.

Exemplo

O exemplo a seguir mostra como um cliente pode enviar dados DSS para seu dispositivo modem. O tratamento de erros foi deixado de fora deste exemplo para obter brevidade e clareza.

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 Valor
Cliente mínimo com suporte Windows 10, versão 1809
Plataforma de Destino Universal
Versão mínima do KMDF 1.27
Cabeçalho mbbcx.h
IRQL PASSIVE_LEVEL