Partager via


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

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