IMiniportWaveRTInputStream::GetReadPacket メソッド (portcls.h)
キャプチャされたデータに関する情報を返します。
構文
NTSTATUS GetReadPacket(
[out] ULONG *PacketNumber,
[out] DWORD *Flags,
[out] ULONG64 *PerformanceCounterValue,
[out] BOOL *MoreData
);
パラメーター
[out] PacketNumber
キャプチャの開始を基準としたパケット番号を返します。
[out] Flags
将来の使用のために予約されています。 0 に設定する必要があります。
[out] PerformanceCounterValue
パケット内の最初のサンプルのサンプリング インスタントに対応するパフォーマンス カウンター値を返します。
[out] MoreData
準備が整ったデータがすぐに存在する場合 TRUE を返します。 OS は、必要に応じて、パケットの処理後すぐにこのルーチンを再度呼び出して、次のパケット情報を取得できます。 ドライバーが FALSE 返した場合、キャプチャはリアルタイムで動作しています。
戻り値
GetReadPacket
は、呼び出しが成功した場合にSTATUS_SUCCESSを返します。 それ以外の場合、関数は適切なエラー状態コードを返します。
STATUS_DEVICE_NOT_READY - 新しいデータが使用できない場合、ドライバーはこのエラーを返します。
備考
キャプチャされたオーディオ データを WaveRT バッファーから読み取る前に、OS はこのルーチンを呼び出して、使用可能なデータに関する情報を取得します。
パケット番号は、ストリーム内のパケットを識別します。 ストリームがKSSTATE_STOPされている場合、これは 0 にリセットされます。 キャプチャされた各バッファーで数値が進みます。 パケット番号から、OS は WaveRT バッファー内のパケットの場所を導き出すことができます。また、ストリームの開始に対するパケットのストリーム位置を派生させることもできます。
パケット サイズは、IMiniportWaveRTStreamNotification::AllocateBufferWithNotificationに渡される NotificationCount で割った WaveRT バッファー サイズです。 OS は、いつでもこのルーチンを呼び出します。 通常の操作では、ドライバーがバッファー通知イベントを設定した後、または前の呼び出しが MoreData に対して true を返した後に、OS によってこのルーチンが呼び出されます。 OS がこのルーチンを呼び出すと、ドライバーは、OS が以前のすべてのパケットの読み取りを完了したと想定することがあります。 ハードウェアが十分なデータをキャプチャした場合、ドライバーはすぐに次の完全なパケットを WaveRT バッファーにバーストし、バッファー イベントをもう一度設定できます。キャプチャ オーバーフローの場合 (OS がデータを十分に迅速に読み取らない場合)、オーディオ ドライバーが一部のオーディオ データを削除または上書きすることがあります。 オーディオ ドライバーは、最初に最も古いデータを削除または上書きします。オーディオ ドライバーは、OS がデータを読み取っていない可能性がある場合でも、内部パケット カウンターを進め続ける可能性があります。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows 10 以降で使用できます。 |
ターゲット プラットフォーム の | ウィンドウズ |
ヘッダー | portcls.h |
IRQL | パッシブ レベル |
関連項目
IMiniportWaveRTInputStream の