EVT_MBB_DEVICE_SEND_MBIM_FRAGMENT コールバック関数 (mbbcx.h)
クライアント ドライバーの EvtMbbDeviceSendMbimFragment イベント callabck 関数は、MBIM コントロール メッセージで指定されたタスクを実行するようにデバイスに指示します。 このコールバック関数は、MBIM 仕様で定義 されている SendEncapsulatedCommand 要求に相当します。
構文
EVT_MBB_DEVICE_SEND_MBIM_FRAGMENT EvtMbbDeviceSendMbimFragment;
void EvtMbbDeviceSendMbimFragment(
WDFDEVICE Device,
MBBREQUEST SendRequest
)
{...}
パラメーター
Device
WdfDeviceCreate の以前の呼び出しから取得したクライアント ドライバーのフレームワーク デバイス オブジェクトへのハンドル。
SendRequest
fragemented MBIM メッセージをデバイスに送信する要求を表すフレームワーク オブジェクトへのハンドル。
戻り値
なし
解説
MBBCx クライアント ドライバーは、MbbDeviceInitialize を呼び出して EvtMbbDeviceSendMbimFragment コールバック関数を登録する必要があります。
MBBCx フレームワークは、MBIM コントロール メッセージの形式でコマンドをクライアント ドライバーに発行する場合に、このコールバック関数を呼び出します。 MBIM 制御メッセージのサイズが、 MBB_DEVICE_MBIM_PARAMETERS 構造のクライアント ドライバーによって設定された最大フラグメント サイズよりも大きい場合、MBBCx フレームワークは MBIM 制御メッセージを複数のフラグメント化されたメッセージに分割し、このコールバック関数を fragemented メッセージごとに 1 回呼び出します。
送信されている実際の MBIM メッセージ フラグメントを取得するには、クライアント ドライバーで MbbRequestGetBuffer を呼び出して、MBIM メッセージ フラグメントが格納されているバッファーを取得する必要があります。 デバイスが制御要求を正常に受け入れた後、またはエラー状態が発生した場合、クライアント ドライバーは、 MbbRequestComplete を非同期または sychronously を呼び出すことによって、MBBCx に対してこれを確認する必要があります。
詳細については、「 MBIM 制御メッセージの処理」を参照してください。
例
簡潔でわかりやすくするために、この例ではエラー処理コードが取り残されています。
VOID
EvtMbbDeviceSendMbimFragment(
WDFDEVICE Device,
MBBREQUEST SendRequest
)
{
// The client driver-specified framework object context
PMY_DEVICE_CONTEXT myContext = GetMyDeviceContext(Device);
size_t bufferSize = 0;
PVOID buffer = MbbRequestGetBuffer(SendRequest, &bufferSize);
// This client driver example uses asynchronous completion
auto myDeviceSendCompletionRoutine = [](MBBREQUEST SendRequest, NTSTATUS NtStatus)
{
//Acknowledge back to MBBCx
MbbRequestComplete(SendRequest, NtStatus);
};
// The client driver-specified function call into its device
NTSTATUS sendStatus = MyDeviceAsyncSend(
// The client driver-specific handle
myContext->MyDeviceHandle,
// The context for completion
SendRequest,
// MBIM message
buffer,
// MBIM message size
bufferSize,
// Can be used for logging purpose, for example
MbbRequestGetActivityId(SendRequest),
// The client driver-specific completion routine
myDeviceSendCompletionRoutine);
if (sendStatus != STATUS_PENDING)
{
// Acknowledge back to MBBCx
myDeviceSendCompletionRoutine(
SendRequest,
sendStatus);
}
}
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 10 Version 1809 |
対象プラットフォーム | ユニバーサル |
最小 KMDF バージョン | 1.27 |
Header | mbbcx.h |
IRQL | <= DISPATCH_LEVEL |
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示