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 wird.

[in] Flags

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

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 Aufruf erfolgreich war. Andernfalls gibt die Funktion einen entsprechenden Fehler status Code 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 Störungsbedingung aufgetreten. Der Treiber kann optional einige der Daten aus dem Paket verwenden oder weiterhin die Daten ausspielen, die zuvor in diese Paketnummer geschrieben wurden.

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 Störungsbedingung aufgetreten. Der Treiber kann optional die Daten im Paket ignorieren.

STATUS_INVALID_DEVICE_STATE: Der Treiber gibt diesen Fehler zurück, wenn das Betriebssystem diese Routine aufruft, nachdem zuvor das flag KSSTREAM_HEADER_OPTIONSF_ENDOFSTREAM festgelegt wurde.

STATUS_INVALID_PARAMETER : Der Treiber gibt diesen Fehler zurück, wenn er einen anderen Parameter ungültig findet, abgesehen von den spezifischen Fällen für andere Fehler status. Dies umfasst alle Flag-Werte, die oben nicht speziell definiert sind.

Hinweise

Nachdem das Betriebssystem diese Routine aufgerufen hat, kann der Treiber optional die bereitgestellten Informationen verwenden, um die Hardwareübertragung zu optimieren. Beispielsweise kann der Treiber DMA-Übertragungen optimieren oder Hardware so programmieren, dass die Übertragung am Ende des angegebenen Pakets beendet wird, falls das Betriebssystem diese Routine nicht erneut aufruft, um den Treiber über ein anderes Paket zu informieren. Dies kann hörbare Auswirkungen des Unterlaufs verringern, z. B. das Einführen 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.

Wenn das KSSTREAM_HEADER_OPTIONSF_ENDOFSTREAM-Flag angegeben ist, kann der Treiber je nach Hardwarefunktion einen Teil des WaveRT-Puffers, der dem EOS-Paket folgt, stillen, falls die Hardware Daten über die EOS-Position hinaus überträgt.

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

IMiniportWaveRTOutputStream