共用方式為


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

架構物件的句柄,代表從裝置接收分散 MBIM 訊息的要求。

傳回值

備註

MBBCx 用戶端驅動程序必須藉由呼叫 MbbDeviceInitialize 來註冊 EvtMbbDeviceReceiveMbimFragment 回呼函式。

MBBCx 架構會在用戶端驅動程式收到 來自裝置的 MBIM 訊息的通知之後,呼叫此回呼函式,以回應架構先前的 MBIM 控制訊息要求,或作為未經請求的裝置事件。

在此回呼函式中,用戶端驅動程式會將回應 MBIM 訊息放入 MBBCx 架構預先配置的緩衝區空間。 如果單一回應消息的大小大於預先配置的緩衝區大小,則必須將此回應消息分割成多個分散的訊息,如 MBIM 規格中所述。 當片段發生時,MBBCx 會繼續呼叫此回呼函式,每個片段一次,直到收到回應 MBIM 訊息的所有片段為止。

若要存取預先配置的緩衝區空間及其大小,用戶端驅動程序應該呼叫 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 synchronously.
    //
    memset(buffer, '*', bufferSize);
    filledSize = bufferSize;

    MbbRequestCompleteWithInformation(ReceiveRequest,
        STATUS_SUCCESS,
        filledSize);
}

規格需求

需求
最低支援的用戶端 Windows 10 版本 1809
目標平台 Universal
最低 KMDF 版本 1.27
標頭 mbbcx.h
IRQL PASSIVE_LEVEL