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 バッファー内のパケットの場所を派生させることができます。また、ストリームの開始に対するパケットのストリーム位置を派生させることもできます。
パケット サイズは、WaveRT バッファー サイズを 、IMiniportWaveRTStreamNotification::AllocateBufferWithNotification に渡される NotificationCount で割った値です。 OS は、いつでもこのルーチンを呼び出します。 通常の操作では、ドライバーがバッファー通知イベントを設定した後、または以前の呼び出しが MoreData に対して true を返した後に、OS によってこのルーチンが呼び出されます。 OS がこのルーチンを呼び出すと、ドライバーは、OS が以前のすべてのパケットの読み取りを完了したと見なす場合があります。 ハードウェアが十分なデータをキャプチャした場合、ドライバーは次の完全なパケットを WaveRT バッファーにすぐにバーストし、バッファー イベントを再度設定する可能性があります。キャプチャ オーバーフローの場合 (OS がデータを十分に速く読み取らない場合)、オーディオ ドライバーが一部のオーディオ データを削除または上書きする可能性があります。 オーディオ ドライバーは、最初に最も古いデータを削除または上書きします。オーディオ ドライバーは、OS がデータを読み取っていない可能性がある場合でも、内部パケット カウンターを進め続ける可能性があります。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 10以降で使用できます。 |
対象プラットフォーム | Windows |
ヘッダー | portcls.h |
IRQL | パッシブ レベル |