structure DMUS_KERNEL_EVENT (dmusicks.h)
La structure DMUS_KERNEL_EVENT est utilisée pour empaqueter les événements musicaux 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 une utilisation ultérieure. N’utilisez pas.
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. Cela 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 conclut 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 l’or 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. L’ancien inclut tous les messages courts et potentiellement inclut des messages SysEx très brefs (consultez également la documentation du Kit de développement logiciel (SDK) Microsoft Windows). N’oubliez pas que taille de(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 (consultez la documentation du Kit de développement logiciel (SDK) Windows). Cet indicateur spécifie que le message se poursuit 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 doit être traitée 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 principale 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 le passage de chaînes de messages horodatés identiques au pilote miniport. En outre, le matériel qui effectue sa propre combinaison peut recevoir ou transmettre des groupes de messages à la fois.
uData
uData.abData[sizeof(PBYTE)]
Tableau d’octets contenant cbEvent octets de données d’événement. Les données d’événement sont généralement l’état MIDI et les octets de données. Ce membre de uData est utilisé si cbEvent est inférieur ou égal à taille de(PBYTE).
uData.pbData
Pointeur vers une mémoire tampon contenant cbEvent octets de données d’événement. Les données d’événement sont généralement l’état MIDI et les octets de données. Ce membre de uData est utilisé si uFlags est défini sur DMUS_KEF_EVENT_COMPLETE et cbEvent est supérieur à taille de(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 d’un état MIDI et d’octets de données. Les événements de la liste doivent être gérés ensemble. Ce membre de 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 fournissent la prise en charge du streaming 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 des structures DMUS_KERNEL_EVENT 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 les structures DMUS_KERNEL_EVENT à mesure qu’elle les lit. Pour plus d’informations, consultez de 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 usFlags membre doit être défini sur DMUS_KEF_EVENT_INCOMPLETE, sauf s’il s’agit d’un seul message MIDI complet. Cette structure contient également les éléments suivants :
- Horodatage relatif à l’horloge principale (ullPresTime100Ns)
- Informations sur le 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.
Exigences
Exigence | Valeur |
---|---|
d’en-tête | dmusicks.h (include Dmusicks.h) |