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 |