Partager via


structure SERCX2_SYSTEM_DMA_RECEIVE_CONFIG (sercx.h)

La structure SERCX2_SYSTEM_DMA_RECEIVE_CONFIG contient des informations que la version 2 de l’extension de framework série (SerCx2) utilise pour configurer un nouvel objet de réception DMA système.

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 futures versions 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 requête de lecture (IRP_MJ_READ) est supérieure à cette taille maximale, SerCx2 utilise plusieurs transferts DMA pour gérer la requête et limite chaque transfert à la longueur maximale.

MinimumTransactionLength

Longueur minimale, en octets, d’une transaction de réception système-DMA. 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 de réception système-DMA doit être alignée en mémoire. Définissez ce membre sur la constante_ALIGNMENT XXX FILE_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 une limite à deux octets en mémoire, FILE_LONG_ALIGNMENT indique que l’adresse doit être alignée sur une limite de quatre octets, et ainsi de suite. 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 le 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 système-DMA.

DmaWidth

Largeur du registre de données à l’adresse spécifiée par DeviceAddress. Les valeurs possibles sont Width8Bits, Width16Bits, Width32Bitset Width64Bits.

DeviceAddress

Adresse traduite à partir de laquelle le contrôleur DMA transfère. 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 de contrôleur série obtient cette structure à partir de la liste de ressources brute qu’il reçoit dans le EvtDevicePrepareHardware rappel 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és par un élément d’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 de réception système-DMA exclusivement pour gérer les requêtes d’écriture (IRP_MJ_READ). Défini sur TRUE pour indiquer que les demandes de lecture doivent utiliser exclusivement des transactions de réception système-DMA. Défini sur faux pour indiquer que les demandes de lecture peuvent utiliser une combinaison de transactions de réception système-DMA et de transactions de réception PIO.

Définissez ce membre sur TRUE uniquement si l’unité de transfert minimale pour les transactions de réception DMA système est d’un octet, la longueur minimale des transactions 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 exclusif est TRUE, les membresMinimumTransferUnitOverride , DmaAlignmentet MinimumTransactionLength membres doivent être zéro.

Quelle que soit la valeur de ce membre, les transactions piO-receive sont utilisées pour enregistrer 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 un état à faible alimentation.

EvtSerCx2SystemDmaReceiveInitializeTransaction

Pointeur vers la fonction de rappel d’événements 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énements 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 l’implémentation du pilote EvtSerCx2SystemDmaReceiveCancelNewDataNotification fonction de rappel d’événement. 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.

Exigences

Exigence Valeur
client minimum pris en charge Prise en charge à partir de Windows 8.1.
d’en-tête sercx.h

Voir aussi

CM_PARTIAL_RESOURCE_DESCRIPTOR

EvtDevicePrepareHardware

EvtSerCx2SystemDmaReceiveCancelNewDataNotification

EvtSerCx2SystemDmaReceiveCleanupTransaction

EvtSerCx2SystemDmaReceiveConfigureDmaChannel

EvtSerCx2SystemDmaReceiveEnableNewDataNotification

EvtSerCx2SystemDmaReceiveInitializeTransaction

IRP_MJ_READ

SERCX2_SYSTEM_DMA_RECEIVE_CONFIG_INIT

SERCX2_SYSTEM_DMA_RECEIVE_CONFIG_INIT_NEW_DATA_NOTIFICATION

SerCx2SystemDmaReceiveCreate

WdfDmaEnablerSetMaximumScatterGatherElements