Freigeben über


IMiniportWaveRTOutputStream::SetWritePacket-Methode (portcls.h)

SetWritePacket informiert den Treiber darüber, dass das Betriebssystem gültige Daten in den WaveRT-Puffer geschrieben hat.

Syntax

NTSTATUS SetWritePacket(
  [in] ULONG PacketNumber,
  [in] DWORD Flags,
  [in] ULONG EosPacketLength
);

Parameter

[in] PacketNumber

Die Nummer des Pakets, das vom Betriebssystem in den WaveRT-Puffer geschrieben wurde.

[in] Flags

Zusätzliche Attribute im Zusammenhang mit dem Paket oder Datenstrom.

KSSTREAM_HEADER_OPTIONSF_ENDOFSTREAM – Dieses Flag gibt an, dass dieses Paket das Ende des Datenstroms darstellt.

[in] EosPacketLength

Die Länge des EOS-Pakets, wenn KSSTREAM_HEADER_OPTIONSF_ENDOFSTREAM in Flags angegeben ist. Null ist ein gültiger Wert. Wenn KSSTREAM_HEADER_OPTIONSF_ENDOFSTREAM in Flags nicht angegeben ist, wird dieser Parameter ignoriert.

Rückgabewert

SetWritePacket gibt STATUS_SUCCESS zurück, wenn der Anruf erfolgreich war. Andernfalls gibt die Funktion einen entsprechenden Fehlerstatuscode zurück.

STATUS_DATA_LATE_ERROR – Der Treiber gibt diesen Fehler zurück, wenn das Betriebssystem eine Paketnummer übergibt, die bereits übertragen wurde oder derzeit übertragen wird. In diesem Fall ist eine Glitch-Bedingung aufgetreten. Der Treiber kann optional einige daten aus dem Paket verwenden oder die zuvor in diese Paketnummer geschriebenen Daten weiter wiedergeben.

STATUS_DATA_OVERRUN – Der Treiber gibt diesen Fehler zurück, wenn das Betriebssystem eine Paketnummer übergibt, die höher ist als im WaveRT-Puffer gespeichert werden kann. In diesem Fall ist eine Glitch-Bedingung aufgetreten. Der Treiber kann die Daten im Paket optional ignorieren.

STATUS_INVALID_DEVICE_STATE – Der Treiber gibt diesen Fehler zurück, wenn das Betriebssystem diese Routine nach einer zuvor festgelegten KSSTREAM_HEADER_OPTIONSF_ENDOFSTREAM-Kennzeichnung aufruft.

STATUS_INVALID_PARAMETER – Der Treiber gibt diesen Fehler zurück, wenn er einen anderen ungültigen Parameter findet, abgesehen von den spezifischen Fällen für einen anderen Fehlerstatus. Dies schließt alle Flag-Werte ein, die oben nicht ausdrücklich definiert sind.

Bemerkungen

Nachdem das Betriebssystem diese Routine aufruft, kann der Treiber optional die bereitgestellten Informationen verwenden, um die Hardwareübertragung zu optimieren. Beispielsweise kann der Treiber DMA-Übertragungen optimieren oder Hardware programmieren, um die Übertragung am Ende des angegebenen Pakets zu beenden, falls das Betriebssystem diese Routine nicht erneut aufruft, um den Treiber eines anderen Pakets zu informieren. Dies kann hörbare Auswirkungen des Unterlaufs verringern, z. B. die Einführung einer akustischen Lücke anstelle eines kreisförmigen Puffers. Der Treiber ist jedoch weiterhin verpflichtet, seine internen Paketzähler- und Signalbenachrichtigungsereignisse mit einer nominalen Echtzeitrate zu erhöhen.

Außer wenn das Betriebssystem das flag KSSTREAM_HEADER_OPTIONSF_ENDOFSTREAM angibt, ist die Paketgröße die WaveRT-Puffergröße dividiert durch den NotificationCount, der an IMiniportWaveRTStreamNotification::AllocateBufferWithNotificationübergeben wird.

Je nach Hardwarefunktionen füllt KSSTREAM_HEADER_OPTIONSF_ENDOFSTREAM der Treiber möglicherweise einen Teil des WaveRT-Puffers aus, der auf das EOS-Paket folgt, falls die Hardware Daten über die EOS-Position hinaus überträgt.

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

IMiniportWaveRTOutputStream-