次の方法で共有


EVT_MBB_DEVICE_SEND_DEVICE_SERVICE_SESSION_DATA コールバック関数 (mbbcx.h)

クライアント ドライバーの EvtMbbDeviceSendServiceSessionData イベント コールバック関数は、デバイス サービス セッション データをモデム デバイスに送信します。

構文

EVT_MBB_DEVICE_SEND_DEVICE_SERVICE_SESSION_DATA EvtMbbDeviceSendDeviceServiceSessionData;

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

パラメーター

Device

WdfDeviceCreateへの以前の呼び出しから取得したクライアント ドライバーフレームワーク デバイス オブジェクトへのハンドル。

SessionId

MbbAdapterGetSessionIdへの前回の呼び出しから取得したデバイス サービス セッションの ID。

Data

デバイスに渡すデータを格納している WDFMEMORY オブジェクト。

戻り値

何一つ

備考

MBBCx は、アプリケーションが DSS データをモデム デバイスに送信するときに、クライアント ドライバーの EvtMbbDeviceSendServiceSessionData コールバック関数を呼び出します。 デバイスに非同期的にデータを送信した後、クライアント ドライバーは MbbDeviceSendServiceSessionDataComplete呼び出して、MBBCx がデータに割り当てられたメモリを解放できるようにする必要があります。

次の例は、クライアントが DSS データをモデム デバイスに送信する方法を示しています。 この例では、簡潔でわかりやすくするために、エラー処理は省略されています。

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

必要条件

要件 価値
サポートされる最小クライアント Windows 10 バージョン 1809
ターゲット プラットフォーム 万国
最小 KMDF バージョン 1.27
ヘッダー mbbcx.h
IRQL PASSIVE_LEVEL