DMUS_KERNEL_EVENT structure (dmusicks.h)
La structure DMUS_KERNEL_EVENT est utilisée pour empaqueter des événements de musique horodatés.
Syntaxe
typedef struct _DMUS_KERNEL_EVENT {
BYTE bReserved;
BYTE cbStruct;
USHORT cbEvent;
USHORT usChannelGroup;
USHORT usFlags;
REFERENCE_TIME ullPresTime100ns;
ULONGLONG ullBytePosition;
_DMUS_KERNEL_EVENT *pNextEvt;
union {
BYTE abData[sizeof(PBYTE)];
PBYTE pbData;
_DMUS_KERNEL_EVENT *pPackageEvt;
} uData;
} DMUS_KERNEL_EVENT, *PDMUS_KERNEL_EVENT;
Membres
bReserved
Les pilotes miniport ne doivent pas modifier ce membre. Réservé pour un usage futur. Ne pas utiliser.
cbStruct
Les pilotes miniport ne doivent pas modifier ce membre. Ce membre spécifie la taille de la structure DMUS_KERNEL_EVENT elle-même et peut changer à l’avenir.
cbEvent
Spécifie le nombre non arrondi d’octets d’événement référencés par uData.
usChannelGroup
Spécifie le groupe de canaux (ensemble de 16 canaux MIDI) qui reçoit ou provient de cet événement. Ceci est unique uniquement dans le périphérique MIDI cible (pilote miniport).
usFlags
Spécifie si un événement est un package et si cet événement termine le message. Un package encapsule une liste d’événements qui doivent être traités atomiquement. Ce membre est un champ de bits qui peut être défini sur ou au niveau du bit d’un ou plusieurs des bits d’indicateur suivants :
DMUS_KEF_EVENT_COMPLETE (zéro)
Spécifie les messages dans lesquels le message entier est contenu dans uData.abData ou dans la mémoire tampon pointée par uData.pbData. Le premier inclut tous les messages courts et potentiellement des messages SysEx très brefs (voir Microsoft Windows SDK documentation) ainsi. Gardez à l’esprit que sizeof(PBYTE) peut être 8 au lieu de 4 sur les versions 64 bits de Windows.
DMUS_KEF_EVENT_INCOMPLETE
Spécifie que cet événement est un package incomplet ou un message SysEx (voir la documentation du KIT DE DÉVELOPPEMENT LOGICIEL Windows). Cet indicateur spécifie que le message continue au-delà de cet événement. Pendant la capture MIDI, le pilote miniport peut envoyer des événements MIDI « non cuits » (données d’entrée MIDI brutes) au récepteur de capture en spécifiant cet indicateur.
DMUS_KEF_PACKAGE_EVENT
Spécifie que cet événement est un package. Le champ uData.pPackageEvt contient un pointeur vers une chaîne d’événements qui doivent être traités atomiquement.
ullPresTime100ns
Spécifie l’heure de présentation de cet événement. Cette valeur 64 bits est exprimée en unités de 100 nanosecondes. L’horloge master doit être utilisée pour évaluer cette heure de présentation.
ullBytePosition
8 16
pNextEvt
Pointeur vers l’événement suivant dans la liste ou NULL si aucun événement ne suit. Cela facilite la transmission de chaînes de messages horodatés identiques au pilote du miniport. En outre, le matériel qui effectue son propre mélange peut recevoir ou transmettre des groupes de messages à la fois.
uData
uData.abData[sizeof(PBYTE)]
Tableau d’octets contenant des octets cbEvent de données d’événement. Les données d’événement sont généralement des status midi et des octets de données. Ce membre d’uData est utilisé si cbEvent est inférieur ou égal à sizeof(PBYTE).
uData.pbData
Pointeur vers une mémoire tampon contenant des octets cbEvent de données d’événement. Les données d’événement sont généralement des status midi et des octets de données. Ce membre de uData est utilisé si uFlags est défini sur DMUS_KEF_EVENT_COMPLETE et que cbEvent est supérieur à sizeof(PBYTE).
uData.pPackageEvt
Pointeur vers une chaîne d’événements, qui se présente sous la forme d’une liste liée de structures DMUS_KERNEL_EVENT. Les données d’événement se composent généralement de status MIDI et d’octets de données. Les événements de la liste doivent être gérés ensemble. Ce membre d’uData est utilisé si uFlags est défini sur DMUS_KEF_PACKAGE_EVENT.
Remarques
La structure DMUS_KERNEL_EVENT est utilisée par les pilotes audio WDM qui prennent en charge la diffusion en continu du noyau pour DirectMusic.
Lors de la capture d’un flux MIDI, le pilote de port DMus appelle la méthode IAllocatorMXF ::GetMessage pour récupérer DMUS_KERNEL_EVENT structures pour contenir les données capturées. Lors du rendu d’un flux MIDI, le pilote de port appelle la méthode IMXF ::P utMessage pour ignorer DMUS_KERNEL_EVENT structures à mesure qu’elle termine leur lecture. Pour plus d’informations, consultez Transport MIDI.
Dans le cas de la capture MIDI, la structure DMUS_KERNEL_EVENT peut être empaquetée avec des messages MIDI uniques, multiples ou fragmentaires. Le membre usFlags doit être défini sur DMUS_KEF_EVENT_INCOMPLETE, sauf s’il s’agit d’un seul message MIDI complet. Cette structure contient également :
- Horodatage relatif à l’horloge master (ullPresTime100N)
- Informations de canal étendu (usChannelGroup)
<broche, channel_group, canal>
Le temps de présentation n’avance pas pendant les états KSSTATE_PAUSE et KSSTATE_STOP, et est réinitialisé pendant KSSTATE_STOP. Pour plus d’informations, consultez Horloges KS.
Configuration requise
Condition requise | Valeur |
---|---|
En-tête | dmusicks.h (inclure Dmusicks.h) |