SERCX2_SYSTEM_DMA_RECEIVE_CONFIG structure (sercx.h)
La structure SERCX2_SYSTEM_DMA_RECEIVE_CONFIG contient des informations que la version 2 de l’extension d’infrastructure série (SerCx2) utilise pour configurer un nouvel objet system-DMA-receive.
Syntaxe
typedef struct _SERCX2_SYSTEM_DMA_RECEIVE_CONFIG {
ULONG Size;
size_t MaximumTransferLength;
size_t MinimumTransactionLength;
ULONG DmaAlignment;
ULONG MaximumScatterGatherFragments;
DMA_WIDTH DmaWidth;
PHYSICAL_ADDRESS DeviceAddress;
PCM_PARTIAL_RESOURCE_DESCRIPTOR DmaDescriptor;
ULONG MinimumTransferUnitOverride;
BOOLEAN Exclusive;
PFN_SERCX2_SYSTEM_DMA_RECEIVE_INITIALIZE_TRANSACTION EvtSerCx2SystemDmaReceiveInitializeTransaction;
PFN_SERCX2_SYSTEM_DMA_RECEIVE_CLEANUP_TRANSACTION EvtSerCx2SystemDmaReceiveCleanupTransaction;
PFN_SERCX2_SYSTEM_DMA_RECEIVE_CONFIGURE_DMA_CHANNEL EvtSerCx2SystemDmaReceiveConfigureDmaChannel;
PFN_SERCX2_SYSTEM_DMA_RECEIVE_ENABLE_NEW_DATA_NOTIFICATION EvtSerCx2SystemDmaReceiveEnableNewDataNotification;
PFN_SERCX2_SYSTEM_DMA_RECEIVE_CANCEL_NEW_DATA_NOTIFICATION EvtSerCx2SystemDmaReceiveCancelNewDataNotification;
} SERCX2_SYSTEM_DMA_RECEIVE_CONFIG, *PSERCX2_SYSTEM_DMA_RECEIVE_CONFIG;
Membres
Size
Taille, en octets, de cette structure. La méthode SerCx2SystemDmaReceiveCreate utilise ce membre pour déterminer la version de la structure utilisée par l’appelant. La taille de cette structure peut changer dans les versions futures du fichier d’en-tête Sercx.h.
MaximumTransferLength
Taille maximale par défaut, en octets, que le contrôleur série peut gérer dans un seul transfert DMA système. Si la taille de la mémoire tampon dans la demande de lecture (IRP_MJ_READ) est supérieure à cette taille maximale, SerCx2 utilise plusieurs transferts DMA pour gérer la demande et limite chaque transfert à la longueur maximale.
MinimumTransactionLength
Longueur minimale, en octets, d’une transaction system-DMA-receive. Si la longueur de la mémoire tampon dans une demande de lecture est inférieure à cette longueur minimale, SerCx2 utilise des E/S programmées (PIO) pour la transaction.
DmaAlignment
Exigence d’alignement DMA. Spécifie comment l’adresse de départ d’un transfert dans une transaction system-DMA-receive doit être alignée en mémoire. Définissez ce membre sur la constante FILE_XXX_ALIGNMENT appropriée dans le fichier d’en-tête Wdm.h. Par exemple, FILE_WORD_ALIGNMENT indique que l’adresse DMA de départ doit être alignée sur la limite de deux octets en mémoire, FILE_LONG_ALIGNMENT indique que l’adresse doit être alignée sur une limite de quatre octets, etc. SerCx2 ne prend pas en charge FILE_BYTE_ALIGNMENT. L’unité de transfert minimale (MTU) de l’adaptateur DMA système doit être supérieure ou égale à l’alignement requis. Par exemple, si la MTU est de quatre octets, DmaAlignment doit être au moins FILE_LONG_ALIGNMENT.
MaximumScatterGatherFragments
Nombre maximal de fragments de mémoire tampon qui peuvent être spécifiés dans la liste de points/regroupements pour un transfert DMA dans une transaction de réception DMA système.
DmaWidth
Largeur du registre de données à l’adresse spécifiée par DeviceAddress. Les valeurs possibles sont Width8Bits, Width16Bits, Width32Bits et Width64Bits.
DeviceAddress
Adresse traduite à partir de laquelle le contrôleur DMA est transféré. Pour plus d’informations, consultez la description du membre DeviceAddress dans WDF_DMA_SYSTEM_PROFILE_CONFIG.
DmaDescriptor
Pointeur vers la structure CM_PARTIAL_RESOURCE_DESCRIPTOR qui décrit la ressource DMA système à utiliser pour les transactions de réception. Le pilote du contrôleur série obtient cette structure à partir de la liste de ressources brutes qu’il reçoit dans le rappel EvtDevicePrepareHardware qui démarre le contrôleur série.
MinimumTransferUnitOverride
Valeur de remplacement à utiliser à la place de l’unité de transfert minimale par défaut. Le nombre d’octets spécifié par un élément dans une liste de points/regroupements doit être un multiple entier de l’unité de transfert minimale. La valeur zéro indique que l’unité de transfert minimale par défaut doit être utilisée. Pour plus d’informations, consultez la description du membre MinimumTransferUnit dans DMA_ADAPTER_INFO_V1.
Exclusive
Indique s’il faut utiliser des transactions system-DMA-receive exclusivement pour gérer les demandes d’écriture (IRP_MJ_READ). Définissez sur TRUE pour indiquer que les demandes de lecture doivent utiliser exclusivement des transactions system-DMA-receive. Définissez sur FALSE pour indiquer que les demandes de lecture peuvent utiliser une combinaison de transactions system-DMA-receive et de transactions PIO-receive.
Définissez ce membre sur TRUE uniquement si l’unité de transfert minimale pour les transactions system-DMA-receive est d’un octet, que la longueur minimale de la transaction est d’un octet et que la mémoire tampon de lecture de la transaction peut démarrer sur n’importe quelle limite d’octets en mémoire.
Si Exclusive a la valeur TRUE, les membres MinimumTransferUnitOverride, DmaAlignment et MinimumTransactionLength doivent être zéro.
Quelle que soit la valeur de ce membre, les transactions piO-receive sont utilisées pour enregistrer toutes les données non lues dans le fifo de réception avant que le contrôleur série ne quitte l’état d’alimentation de l’appareil D0 pour entrer dans un état de faible consommation.
EvtSerCx2SystemDmaReceiveInitializeTransaction
Pointeur vers la fonction de rappel d’événement EvtSerCx2SystemDmaReceiveInitializeTransaction implémentée par le pilote. Ce membre est facultatif et peut être défini sur NULL pour indiquer que le pilote n’implémente pas la fonction.
EvtSerCx2SystemDmaReceiveCleanupTransaction
Pointeur vers la fonction de rappel d’événement EvtSerCx2SystemDmaReceiveCleanupTransaction implémentée par le pilote. Ce membre est facultatif et peut être défini sur NULL pour indiquer que le pilote n’implémente pas la fonction.
EvtSerCx2SystemDmaReceiveConfigureDmaChannel
Pointeur vers la fonction de rappel d’événement EvtSerCx2SystemDmaReceiveConfigureDmaChannel implémentée par le pilote. Ce membre est facultatif et peut être défini sur NULL pour indiquer que le pilote n’implémente pas la fonction.
EvtSerCx2SystemDmaReceiveEnableNewDataNotification
Pointeur vers la fonction de rappel d’événement EvtSerCx2SystemDmaReceiveEnableNewDataNotification implémentée par le pilote. Ce membre est facultatif et peut être défini sur NULL pour indiquer que le pilote n’implémente pas la fonction. Toutefois, un pilote qui implémente cette fonction doit également implémenter une fonction EvtSerCx2SystemDmaReceiveCancelNewDataNotification .
EvtSerCx2SystemDmaReceiveCancelNewDataNotification
Pointeur vers la fonction de rappel d’événement EvtSerCx2SystemDmaReceiveCancelNewDataNotification implémentée par le pilote. Ce membre est facultatif et peut être défini sur NULL pour indiquer que le pilote n’implémente pas la fonction. Toutefois, un pilote qui implémente cette fonction doit également implémenter une fonction EvtSerCx2SystemDmaReceiveEnableNewDataNotification .
Remarques
La méthode SerCx2SystemDmaReceiveCreate accepte un pointeur vers une structure SERCX2_SYSTEM_DMA_RECEIVE_CONFIG en tant que paramètre d’entrée. Avant d’appeler SerCx2SystemDmaReceiveCreate, appelez la fonction SERCX2_SYSTEM_DMA_RECEIVE_CONFIG_INIT ou SERCX2_SYSTEM_DMA_RECEIVE_CONFIG_INIT_NEW_DATA_NOTIFICATION pour initialiser cette structure.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Pris en charge à partir de Windows 8.1. |
En-tête | sercx.h |
Voir aussi
CM_PARTIAL_RESOURCE_DESCRIPTOR
EvtSerCx2SystemDmaReceiveCancelNewDataNotification
EvtSerCx2SystemDmaReceiveCleanupTransaction
EvtSerCx2SystemDmaReceiveConfigureDmaChannel
EvtSerCx2SystemDmaReceiveEnableNewDataNotification
EvtSerCx2SystemDmaReceiveInitializeTransaction
SERCX2_SYSTEM_DMA_RECEIVE_CONFIG_INIT
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour