Freigeben über


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 Anfang der Erfassung zurück.

[out] Flags

Reserviert für die zukünftige Verwendung. Muss auf 0 festgelegt sein.

[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 nach der Verarbeitung des Pakets erneut aufrufen, 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 Anruf erfolgreich war. Andernfalls gibt die Funktion einen entsprechenden Fehlerstatuscode zurück.

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

Bemerkungen

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. Dadurch wird auf Null zurückgesetzt, wenn sich der Datenstrom in KSSTATE_STOP befindet. Die Zahl wechselt mit jedem erfassten Puffer. Von der Paketnummer kann das Betriebssystem den Paketspeicherort innerhalb des WaveRT-Puffers ableiten und auch die Datenstromposition des Pakets relativ zum Anfang des Datenstroms ableiten.

Die Paketgröße ist die WaveRT-Puffergröße dividiert durch den NotificationCount, der an IMiniportWaveRTStreamNotification::AllocateBufferWithNotificationübergeben wird. Das Betriebssystem kann diese Routine jederzeit aufrufen. Im normalen Vorgang ruft das Betriebssystem diese Routine auf, nachdem der Treiber das Pufferbenachrichtigungsereignis oder nach einem vorherigen 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 das nächste vollständige Paket sofort in den WaveRT-Puffer aufbrechen und das Pufferereignis erneut festlegen. Im Falle des Überlaufs der Aufnahme (wenn das Betriebssystem daten nicht schnell genug liest) kann der Audiotreiber einige Audiodaten ablegen oder überschreiben. Der Audiotreiber legt die ältesten Daten zuerst ab oder überschreibt sie, der Audiotreiber kann weiterhin seinen internen Paketzähler voranbringen, obwohl das Betriebssystem die Daten möglicherweise nicht gelesen hat.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Verfügbar in Windows 10 und höher.
Zielplattform- Fenster
Header- portcls.h
IRQL- Passive Ebene

Siehe auch

IMiniportWaveRTInputStream