共用方式為


KSPROPERTY_RTAUDIO_PACKETCOUNT

KSPROPERTY_RTAUDIO_PACKETCOUNT傳回完全從 WaveRT 緩衝區傳輸到硬體的封包 (1 型) 計數。

使用量摘要表格

Get 集合 目標 屬性描述元類型 屬性值類型

Pin

KSPROPERTY

ULONG

屬性描述元 (實例資料) 是 KSPROPERTY 結構。 傳送要求之前,用戶端會 (以 1 個架構) 完全從 WaveRT 緩衝區傳輸到硬體的封包計數,載入結構。

屬性值是 ULONG 類型的變數。

傳回值

KSPROPERTY_RTAUDIO_PACKETCOUNT屬性要求會傳回STATUS_SUCCESS,表示它已成功完成。 否則,要求會傳回適當的失敗狀態碼。

備註

從封包計數中,OS 可以衍生寫入 WaveRT 緩衝區之封包的資料流程位置。 OS 也可以衍生下一個封包的 WaveRT 緩衝區位置,以在 WaveRT 緩衝區內寫入。 針對 WaveRT 驅動程式,驅動程式會發出單一通知事件,因為它會從 WaveRT 緩衝區的每個封包傳輸資料。 因此,事件本身無法指出正在傳輸 WaveRT 緩衝區內的封包。 在正常作業中,這不是問題,但在流向案例中,藉由查詢 OS 可以判斷下一個要寫入的封包計數,更容易達成錯誤。

傳回的 PacketCount 表示 (1 個型) 完全從 WaveRT 緩衝區傳輸至硬體的封包計數。 如此一來,OS 就可以判斷目前正在傳輸之封包的 0 個數目,並確保它會在封包前面寫入。 例如,如果封包計數是 5,則 5 個封包已完全傳輸。 也就是說,封包 0-4 已完全傳輸。 因此,封包 5 正在進行中,而且 OS 應該寫入封包 6。 如果 WaveRT 緩衝區的通知計數為 2,則封包 6 會在 WaveRT 緩衝區內的位移 0 (,因為 6 模數 2 為 0,封包大小為 0) 。

OS 可以隨時取得這個屬性。 不過,它通常只會定期取得這個屬性,或在驅動程式傳回資料流程錯誤 (STATUS_DATA_LATE_ERROR之後 STATUS_DATA_OVERRUN) ,從 SetWritePacket () 傳回資料流程錯誤,以重新同步處理驅動程式。

當資料流程處於KSSTATE_STOP時,驅動程式應該將封包計數重設為 0。

規格需求

版本

Windows 10及更新版本的 Windows 作業系統中提供。

標頭

Ksmedia.h

另請參閱

KSPROPSETID_RTAudio