Share via


IAudioClock2::GetDevicePosition-Methode (audioclient.h)

Die GetDevicePosition-Methode ruft die aktuelle Geräteposition in Frames direkt von der Hardware ab.

Syntax

HRESULT GetDevicePosition(
  [out] UINT64 *DevicePosition,
  [out] UINT64 *QPCPosition
);

Parameter

[out] DevicePosition

Empfängt die Geräteposition in Frames. Die empfangene Position ist ein nicht verarbeiteter Wert, den die Methode direkt von der Hardware abruft. Weitere Informationen finden Sie in den Hinweisen.

[out] QPCPosition

Empfängt den Wert des Leistungsindikators zu dem Zeitpunkt, zu dem das Audioendpunktgerät die im DevicePosition-Parameter als Reaktion auf den GetDevicePosition-Aufruf abgerufene Geräteposition liest.
GetDevicePosition konvertiert den Zählerwert in Zeiteinheiten von 100 Nanosekunden, bevor er in QPCPosition geschrieben wird. QPCPosition kann NULL sein, wenn der Client den Leistungsindikatorwert nicht erfordert. Weitere Informationen finden Sie in den Hinweisen.

Rückgabewert

Wenn die Methode erfolgreich ist, wird S_OK zurückgegeben.

Rückgabecode Beschreibung
E_POINTER
Der Parameter DevicePosition ist NULL.
AUDCLNT_E_DEVICE_INVALIDATED
Der Audioendpunkt wurde getrennt.
AUDCLNT_S_POSITION_STALLED
Die IAudioClient::Start-Methode wurde für diesen Stream nicht aufgerufen.

Hinweise

Diese Methode gilt nur für Datenströme im freigegebenen Modus.

Diese Methode ruft zwei korrelierte Datenstrompositionswerte ab:

  • Geräteposition. Der Client ruft die nicht verarbeitete Geräteposition in DevicePosition ab. Dies ist die Streamposition des Beispiels, das derzeit über die Lautsprecher (für einen Renderingstream) wiedergegeben wird oder über das Mikrofon (für einen Aufzeichnungsstream) aufgezeichnet wird. Die Samplingrate des Geräteendpunkts kann sich von der Samplingrate des vom Client verwendeten Mixformats unterscheiden. Um die Geräteposition vom Client abzurufen, rufen Sie IAudioClock::GetPosition auf.
  • Leistungsindikator. Der Client ruft den Leistungsindikator in QPCPosition ab. GetDevicePosition ruft den Zählerwert ab, indem die QueryPerformanceCounter-Funktion aufgerufen wird, wenn das Audioendpunktgerät die Streamposition im DevicePosition-Parameter der GetDevicePosition-Methode speichert. GetDevicePosition konvertiert den Zählerwert in Zeiteinheiten von 100 Nanosekunden. Weitere Informationen zu QueryPerformanceCounter und QueryPerformanceFrequency finden Sie in der Windows SDK-Dokumentation.
Angesichts der Geräteposition und des Leistungsindikators zum Zeitpunkt des GetDevicePosition-Aufrufs kann der Client zu einem späteren Zeitpunkt eine zeitnahere Schätzung der Geräteposition erhalten, indem QueryPerformanceCounter aufgerufen wird, um den aktuellen Leistungsindikator abzurufen, und die Geräteposition basierend darauf extrapoliert, wie weit der Zähler seit der Aufzeichnung der ursprünglichen Geräteposition fortgeschritten ist. Der Client kann die QueryPerformanceCounter-Funktion aufrufen, um die Häufigkeit der Uhr abzurufen, die den Zähler erhöht. Bevor Sie den von QueryPerformanceCounter abgerufenen Rohindikatorwert mit dem von GetDevicePosition abgerufenen Wert vergleichen, konvertieren Sie den rohen Zählerwert wie folgt in 100 Nanosekunden-Zeiteinheiten:
  1. Multiplizieren Sie den Rohindikatorwert mit 10.000.000.
  2. Dividieren Sie das Ergebnis durch die von QueryPerformanceFrequency abgerufene Zählerhäufigkeit.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 7 [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2008 R2 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile audioclient.h

Weitere Informationen

IAudioClock2