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

クライアント ドライバーの EvtMbbDeviceReceiveMbimFragment イベント コールバック関数は、MBBCx から送信された以前の MBIM 制御メッセージに応答して、デバイスから返される応答メッセージを提供します。 このコールバック関数は、MBIM 仕様で定義 されている GetEncapsulatedResponse 要求に相当します。

構文

EVT_MBB_DEVICE_RECEIVE_MBIM_FRAGMENT EvtMbbDeviceReceiveMbimFragment;

void EvtMbbDeviceReceiveMbimFragment(
  WDFDEVICE Device,
  MBBREQUEST ReceiveRequest
)
{...}

パラメーター

Device

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

ReceiveRequest

デバイスから fragemented MBIM メッセージを受信する要求を表すフレームワーク オブジェクトへのハンドル。

戻り値

なし

解説

MBBCx クライアント ドライバーは、MbbDeviceInitialize を呼び出して EvtMbbDeviceReceiveMbimFragment コールバック関数を登録する必要があります。

MBBCx フレームワークは、 MBIM メッセージがデバイスから使用可能であることをクライアント ドライバーから通知された後、フレームワークからの以前の MBIM 制御メッセージ要求への応答として、または解決されていないデバイス イベントとして、このコールバック関数を呼び出します。

このコールバック関数では、クライアント ドライバーは、MBBCx フレームワークによって事前に割り当てられたバッファー領域に応答 MBIM メッセージを配置します。 1 つの応答メッセージのサイズが事前に割り当てられたバッファーのサイズよりも大きい場合は、MBIM 仕様で説明されているように、この応答メッセージを複数のフラグメント化されたメッセージに分割する必要があります。 断片化が発生した場合、MBBCx は応答 MBIM メッセージのすべてのフラグメントを受信するまで、フラグメントごとに 1 回、このコールバック関数を引き続き呼び出します。

事前に割り当てられたバッファー領域とそのサイズにアクセスするには、クライアント ドライバーで MbbRequestGetBuffer を呼び出す必要があります。 クライアント ドライバーがこのバッファー領域に応答メッセージまたは応答メッセージのフラグメントを入力したら、実際に入力されているバイト数で MbbRequestCompleteWithInformation を呼び出す必要があります。 これは、非同期または同時に実行できます。

詳細については、「 MBIM 制御メッセージの処理」を参照してください。

簡潔でわかりやすくするために、この例ではエラー処理が取り残されています。

VOID
EvtMbbDeviceReceiveMbimFragment(
    WDFDEVICE  Device,
    MBBREQUEST ReceiveRequest
)
{
    size_t filledSize = 0;
    size_t bufferSize = 0;
    PVOID buffer = MbbRequestGetBuffer(ReceiveRequest, &bufferSize);

    // 
    // Write the response MBIM message into the buffer.
    // This example uses memset as an illustration of how
    // it can being completed sycnchronously.
    //
    memset(buffer, '*', bufferSize);
    filledSize = bufferSize;

    MbbRequestCompleteWithInformation(ReceiveRequest,
        STATUS_SUCCESS,
        filledSize);
}

要件

要件
サポートされている最小のクライアント Windows 10 Version 1809
対象プラットフォーム ユニバーサル
最小 KMDF バージョン 1.27
Header mbbcx.h
IRQL PASSIVE_LEVEL