Méthode IMiniportWaveRTOutputStream ::SetWritePacket (portcls.h)
SetWritePacket informe le pilote que le système d’exploitation a écrit des données valides dans la mémoire tampon WaveRT.
Syntaxe
NTSTATUS SetWritePacket(
[in] ULONG PacketNumber,
[in] DWORD Flags,
[in] ULONG EosPacketLength
);
Paramètres
[in] PacketNumber
Numéro du paquet écrit par le système d’exploitation dans la mémoire tampon WaveRT.
[in] Flags
Attributs supplémentaires liés au paquet ou au flux.
KSSTREAM_HEADER_OPTIONSF_ENDOFSTREAM : cet indicateur indique que ce paquet représente la fin du flux de données.
[in] EosPacketLength
Longueur du paquet EOS si KSSTREAM_HEADER_OPTIONSF_ENDOFSTREAM est spécifié dans Indicateurs. Zéro est une valeur valide. Si KSSTREAM_HEADER_OPTIONSF_ENDOFSTREAM n’est pas spécifié dans Indicateurs, ce paramètre est ignoré.
Valeur retournée
SetWritePacket
retourne STATUS_SUCCESS si l’appel a réussi. Sinon, la fonction retourne une erreur appropriée status code.
STATUS_DATA_LATE_ERROR : le pilote retourne cette erreur si le système d’exploitation transmet un numéro de paquet qui a déjà été transféré ou est en cours de transfert. Dans ce cas, une condition de problème s’est produite. Le pilote peut éventuellement utiliser certaines des données du paquet ou continuer à lire les données précédemment écrites dans ce numéro de paquet.
STATUS_DATA_OVERRUN : le pilote retourne cette erreur si le système d’exploitation transmet un numéro de paquet supérieur à celui qui peut être stocké dans la mémoire tampon WaveRT. Dans ce cas, une condition de problème s’est produite. Le pilote peut éventuellement ignorer les données contenues dans le paquet.
STATUS_INVALID_DEVICE_STATE : le pilote retourne cette erreur si le système d’exploitation appelle cette routine après avoir défini précédemment l’indicateur KSSTREAM_HEADER_OPTIONSF_ENDOFSTREAM.
STATUS_INVALID_PARAMETER : le pilote retourne cette erreur s’il trouve un autre paramètre non valide, à l’exception des cas spécifiques pour d’autres status d’erreur. Cela inclut toutes les valeurs d’indicateur qui ne sont pas spécifiquement définies ci-dessus.
Remarques
Une fois que le système d’exploitation a appelé cette routine, le pilote peut éventuellement utiliser les informations fournies pour optimiser le transfert matériel. Par exemple, le pilote peut optimiser les transferts DMA ou le matériel programme pour arrêter le transfert à la fin du paquet spécifié au cas où le système d’exploitation n’appelle pas à nouveau cette routine pour informer le pilote d’un autre paquet. Cela peut atténuer les effets audibles de la sous-circulation, par exemple en introduisant un espace audible plutôt que de répéter une mémoire tampon circulaire. Toutefois, le pilote est toujours obligé d’augmenter son compteur de paquets interne et les événements de notification de signal à un débit nominal en temps réel.
Sauf lorsque le système d’exploitation spécifie l’indicateur KSSTREAM_HEADER_OPTIONSF_ENDOFSTREAM, la taille du paquet correspond à la taille de mémoire tampon WaveRT divisée par la valeur NotificationCount passée à IMiniportWaveRTStreamNotification ::AllocateBufferWithNotification.
Selon les fonctionnalités matérielles, si l’indicateur KSSTREAM_HEADER_OPTIONSF_ENDOFSTREAM est spécifié, le pilote peut réduire au silence-remplir une partie de la mémoire tampon WaveRT qui suit le paquet EOS au cas où le matériel transfère des données au-delà de la position EOS.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Disponible dans Windows 10 et versions ultérieures. |
Plateforme cible | Windows |
En-tête | portcls.h |
IRQL | Niveau passif |