EVT_MBB_DEVICE_SEND_MBIM_FRAGMENT コールバック関数 (mbbcx.h)
クライアント ドライバーの EvtMbbDeviceSendMbimFragment イベント コールバック関数は、MBIM コントロール メッセージで指定されたタスクを実行するようにデバイスに指示します。 このコールバック関数は、MBIM 仕様で定義 されている SendEncapsulatedCommand 要求に相当します。
構文
EVT_MBB_DEVICE_SEND_MBIM_FRAGMENT EvtMbbDeviceSendMbimFragment;
void EvtMbbDeviceSendMbimFragment(
WDFDEVICE Device,
MBBREQUEST SendRequest
)
{...}
パラメーター
Device
WdfDeviceCreate の以前の呼び出しから取得したクライアント ドライバーのフレームワーク デバイス オブジェクトへのハンドル。
SendRequest
断片化された MBIM メッセージをデバイスに送信する要求を表すフレームワーク オブジェクトへのハンドル。
戻り値
なし
解説
MBBCx クライアント ドライバーは、MbbDeviceInitialize を呼び出して EvtMbbDeviceSendMbimFragment コールバック関数を登録する必要があります。
MBBCx フレームワークは、MBIM コントロール メッセージの形式でクライアント ドライバーにコマンドを発行する場合に、このコールバック関数を呼び出します。 MBIM 制御メッセージのサイズが、 MBB_DEVICE_MBIM_PARAMETERS 構造体のクライアント ドライバーによって設定された最大フラグメント サイズより大きい場合、MBBCx フレームワークは MBIM 制御メッセージを複数のフラグメント化されたメッセージに分割し、フラグメント化されたメッセージごとにこのコールバック関数を 1 回呼び出します。
送信されている実際の MBIM メッセージ フラグメントを取得するには、クライアント ドライバーで MbbRequestGetBuffer を呼び出して、MBIM メッセージ フラグメントが格納されているバッファーを取得する必要があります。 デバイスが制御要求を正常に受け入れた後、またはエラー状態が発生したら、クライアント ドライバーは MbbRequestComplete を非同期または同期的に呼び出すことによって、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 |