KSPROPERTY_RTAUDIO_PACKETCOUNT
KSPROPERTY_RTAUDIO_PACKETCOUNT は、WaveRT バッファーからハードウェアに完全に転送されたパケットの (1 から始まる) 数を返します。
用法の要点テーブル
Yammer の入手 | 設定 | 移行先 | プロパティ記述子の種類 | プロパティ値の種類 |
---|---|---|---|---|
はい |
いいえ |
ピン留めする |
プロパティ記述子 (インスタンス データ) は KSPROPERTY 構造体です。 要求を送信する前に、クライアントは WaveRT バッファーからハードウェアに完全に転送されたパケットの (1 から始まる) 数で構造体を読み込みます。
プロパティ値は ULONG 型の変数です。
戻り値
KSPROPERTY_RTAUDIO_PACKETCOUNT プロパティ要求は、正常に完了したことを示すために STATUS_SUCCESS を返します。 それ以外の場合、要求は適切な失敗状態コードを返します。
解説
パケット数から、OS は WaveRT バッファーに書き込むパケットのストリーム位置を派生させることができます。 OS は、次のパケットの WaveRT バッファー位置を派生して、WaveRT バッファー内に書き込むこともできます。 WaveRT ドライバーの場合、ドライバーは WaveRT バッファーの各パケットからデータを転送する際に、1 つの通知イベントを通知します。 そのため、イベントだけでは、WaveRT バッファー内のどのパケットが転送されているかを示すことはできません。 通常の操作では、これは問題ではありませんが、アンダーフローの場合は、OS が次に書き込むパケットを決定できるパケット数をクエリすることで、修正がより簡単に実現されます。
返された PacketCount は、WaveRT バッファーからハードウェアに完全に転送されたパケットの (1 から始まる) 数を示します。 これにより、OS は現在転送されているパケットの 0 から始まる数を決定し、そのパケットの前に書き込まれるようにすることができます。 たとえば、パケット数が 5 の場合、5 つのパケットが完全に転送されます。 つまり、パケット 0 から 4 が完全に転送されます。 したがって、パケット 5 は進行中であり、OS はパケット 6 を書き込む必要があります。 WaveRT バッファーの通知数が 2 の場合、パケット 6 は WaveRT バッファー内のオフセット 0 になります (6 剰余 2 が 0 で、パケット サイズが 0 の 0 倍であるため)。
OS は、このプロパティをいつでも取得できます。 ただし通常、このプロパティは定期的に、またはドライバーと再同期するために SetWritePacket() からデータフロー エラー (STATUS_DATA_LATE_ERROR、STATUS_DATA_OVERRUN) を返した後にのみ取得されます。
ストリームが KSSTATE_STOP の場合、ドライバーはパケット数を 0 にリセットする必要があります。
要件
バージョン |
Windows 10 以降の Windows オペレーティング システムで使用できます。 |
ヘッダー |
Ksmedia.h |