IMiniportWaveRTInputStream::GetReadPacket-Methode (portcls.h)

Gibt Informationen zu erfassten Daten zurück.

Syntax

NTSTATUS GetReadPacket(
  [out] ULONG   *PacketNumber,
  [out] DWORD   *Flags,
  [out] ULONG64 *PerformanceCounterValue,
  [out] BOOL    *MoreData
);

Parameter

[out] PacketNumber

Gibt die Paketnummer relativ zum Beginn der Erfassung zurück.

[out] Flags

Für die zukünftige Verwendung reserviert. Muss auf 0 festgelegt werden.

[out] PerformanceCounterValue

Gibt den Leistungsindikatorwert zurück, der dem Sampling-Instant des ersten Beispiels im Paket entspricht.

[out] MoreData

Gibt TRUE zurück, wenn sofort weitere Daten bereit sind. Das Betriebssystem kann diese Routine optional sofort erneut aufrufen, nachdem das Paket verarbeitet wurde, um die nächsten Paketinformationen abzurufen. Wenn der Treiber FALSE zurückgibt, wird die Erfassung in Echtzeit ausgeführt.

Rückgabewert

GetReadPacket gibt STATUS_SUCCESS zurück, wenn der Aufruf erfolgreich war. Andernfalls gibt die Funktion einen entsprechenden Fehler status Code zurück.

STATUS_DEVICE_NOT_READY: Der Treiber gibt diesen Fehler zurück, wenn keine neuen Daten verfügbar sind.

Hinweise

Vor dem Lesen erfasster Audiodaten aus dem WaveRT-Puffer ruft das Betriebssystem diese Routine auf, um Informationen zu den verfügbaren Daten abzurufen.

Die Paketnummer identifiziert ein Paket innerhalb des Datenstroms. Dies wird auf null zurückgesetzt, wenn sich der Stream in KSSTATE_STOP befindet. Die Zahl wird mit jedem erfassten Puffer erhöht. Von der Paketnummer kann das Betriebssystem den Paketspeicherort innerhalb des WaveRT-Puffers ableiten und auch die Streamposition des Pakets relativ zum Start des Datenstroms ableiten.

Die Paketgröße ist die WaveRT-Puffergröße geteilt durch den NotificationCount, der an IMiniportWaveRTStreamNotification::AllocateBufferWithNotification übergeben wird. Das Betriebssystem kann diese Routine jederzeit aufrufen. Im Normalbetrieb ruft das Betriebssystem diese Routine auf, nachdem der Treiber das Pufferbenachrichtigungsereignis festgelegt hat oder nachdem ein vorheriger Aufruf true für MoreData zurückgibt. Wenn das Betriebssystem diese Routine aufruft, kann der Treiber davon ausgehen, dass das Betriebssystem alle vorherigen Pakete gelesen hat. Wenn die Hardware genügend Daten erfasst hat, kann der Treiber sofort das nächste vollständige Paket in den WaveRT-Puffer bereinigen und das Pufferereignis erneut festlegen. Im Falle eines Aufzeichnungsüberlaufs (wenn das Betriebssystem Daten nicht schnell genug liest) kann der Audiotreiber einige Audiodaten löschen oder überschreiben. Der Audiotreiber löscht oder überschreibt zuerst die ältesten Daten. Der Audiotreiber kann seinen internen Paketzähler weiter voranbringen, auch wenn das Betriebssystem die Daten möglicherweise nicht gelesen hat.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Verfügbar in Windows 10 und höher.
Zielplattform Windows
Kopfzeile portcls.h
IRQL Passive Ebene

Weitere Informationen

IMiniportWaveRTInputStream