Partager via


SerCx2SystemDmaReceiveCreate, fonction (sercx.h)

La méthode SerCx2SystemDmaReceiveCreate crée un objet de réception système-DMA SerCx2, que la version 2 de l’extension de framework série (SerCx2) utilise pour effectuer des transactions de réception système-DMA.

Syntaxe

NTSTATUS SerCx2SystemDmaReceiveCreate(
  [in]           WDFDEVICE                         Device,
  [in]           PSERCX2_SYSTEM_DMA_RECEIVE_CONFIG SystemDmaReceiveConfig,
  [in, optional] PWDF_OBJECT_ATTRIBUTES            Attributes,
  [out]          SERCX2SYSTEMDMARECEIVE            *SystemDmaReceive
);

Paramètres

[in] Device

Handle WDFDEVICE pour l’objet d’appareil framework qui représente le contrôleur série. Le pilote de contrôleur série a créé cet objet dans sa fonction de rappel EvtDriverDeviceAdd. Pour plus d’informations, consultez SerCx2InitializeDevice.

[in] SystemDmaReceiveConfig

Pointeur vers une structure SERCX2_SYSTEM_DMA_RECEIVE_CONFIG. Avant d’appeler cette méthode, l’appelant doit appeler la fonction SERCX2_SYSTEM_DMA_RECEIVE_CONFIG_INIT ou SERCX2_SYSTEM_DMA_RECEIVE_CONFIG_INIT_NEW_DATA_NOTIFICATION pour initialiser la structure. Cette structure contient des pointeurs vers un ensemble de routines de rappel d’événements implémentées par le pilote du contrôleur série. SerCx2 appelle ces fonctions pour effectuer des transactions de réception système-DMA.

[in, optional] Attributes

Pointeur vers une structure WDF_OBJECT_ATTRIBUTES qui décrit les attributs à affecter au nouvel objet system-DMA-receive. Avant d’appeler cette méthode, l’appelant doit appeler la fonction WDF_OBJECT_ATTRIBUTES_INIT pour initialiser la structure. Ce paramètre est facultatif et peut être spécifié en tant que WDF_NO_OBJECT_ATTRIBUTES si le pilote du contrôleur série n’a pas besoin d’affecter des attributs à l’objet. Pour plus d’informations, consultez Remarques.

[out] SystemDmaReceive

Pointeur vers un emplacement vers lequel cette méthode écrit un handle SERCX2SYSTEMDMARECEIVE dans l’objet de réception system-DMA nouvellement créé. SerCx2 et le pilote de contrôleur série utilisent ce handle dans les appels suivants pour faire référence à cet objet.

Valeur de retour

Cette méthode retourne STATUS_SUCCESS si l’appel réussit. Les valeurs de retour d’erreur possibles incluent les codes d’état suivants.

Retourner le code Description
STATUS_INVALID_DEVICE_REQUEST
Un objet system-DMA-receive existe déjà à partir d’un appel précédent SerCx2SystemDmaReceiveCreate ; ou un objet de réception personnalisé existe déjà à partir d’un appel précédent à la méthode SerCx2CustomReceiveCreate ; ou un objet de transmission personnalisé existe à partir d’un appel précédent à la méthode SerCx2CustomTransmitCreate ; ou SerCx2PioReceiveCreate n’a pas encore été appelé pour créer un objet piO-receive.
STATUS_INFO_LENGTH_MISMATCH
La valeur de taille deconfig n’est pas égale taille de(SERCX2_SYSTEM_DMA_RECEIVE_CONFIG).
STATUS_INVALID_PARAMETER
Une valeur de paramètre n’est pas valide.
STATUS_INSUFFICIENT_RESOURCES
Les ressources insuffisantes sont disponibles pour effectuer l’opération demandée.

Remarques

Cette méthode est appelée par le pilote du contrôleur série pour créer un objet de réception DMA système. SerCx2 utilise cet objet pour effectuer des transactions de réception DMA système, qui sont des transactions d’E/S qui utilisent le contrôleur DMA système pour lire les données reçues par le contrôleur série.

En règle générale, un pilote de contrôleur série appelle SerCx2SystemDmaReceiveCreate à partir de son EvtDevicePrepareHardware fonction de rappel. Cette fonction reçoit une liste de ressources matérielles, qui peuvent inclure des canaux DMA système.

Un pilote de contrôleur série doit appeler correctement les méthodes SerCx2InitializeDevice et SerCx2PioReceiveCreate avant d’appeler SerCx2SystemDmaReceiveCreate.

Avant d’appeler SerCx2SystemDmaReceiveCreate, le pilote du contrôleur série doit appeler la fonction SERCX2_SYSTEM_DMA_RECEIVE_CONFIG_INIT ou SERCX2_SYSTEM_DMA_RECEIVE_CONFIG_INIT_NEW_DATA_NOTIFICATION pour initialiser la structure SERCX2_SYSTEM_DMA_RECEIVE_CONFIG pointée par SystemDmaReceiveConfig. Ces fonctions définissent les membres suivants de la structure sur zéro :

  • MaximumScatterGatherFragments
  • MinimumTransferUnitOverride
  • DmaAlignment
  • MinimumTransactionLength
  • exclusif
Si nécessaire, le pilote du contrôleur série peut définir l’un de ces membres sur des valeurs différente de zéro après la retour de la fonction d’initialisation. Toutefois, pour des raisons pratiques, SerCx2SystemDmaReceiveCreate utilise les valeurs par défaut suivantes si ces membres sont zéro :
  • Si MaximumScatterGatherFragments est égal à zéro, SerCx2 définit le nombre maximal d’éléments dans une liste de nuages/regroupements sur ((ULONG)-1).
  • Si MinimumTransferUnitOverride est égal à zéro, SerCx2 définit l’unité de transfert minimale sur sa valeur par défaut, qui est spécifiée dans la structure DMA_ADAPTER pour le contrôleur DMA système. Pour plus d’informations sur cette structure, consultez WdfDmaEnablerWdmGetDmaAdapter.
  • Si DmaAlignment est égal à zéro, SerCx2 définit la valeur d’alignement sur l’unité de transfert minimale. Si MinimumTransferUnitOverride est égal à zéro, l’unité de transfert minimale par défaut est utilisée.
  • Si MinimumTransactionLength est égal à zéro, SerCx2 définit la longueur de transaction minimale sur un octet.
  • Si exclusif est égal à zéro (FALSE), le mode exclusif est désactivé.
Si le pilote appelant définit exclusif sur TRUE, les membres MinimumTransferUnitOverride, DmaAlignmentet MinimumTransactionLength doivent être zéro. Pour plus d’informations, consultez SERCX2_SYSTEM_DMA_RECEIVE_CONFIG.

Si la combinaison spécifiée de fonctions de rappel implémentées n’est pas valide, SerCx2SystemDmaReceiveCreate échoue et retourne STATUS_INVALID_PARAMETER. Le pilote doit implémenter les deux EvtSerCx2SystemDmaReceiveEnableNewDataNotification et EvtSerCx2SystemDmaReceiveCancelNewDataNotification fonctions.

En guise d’option, un pilote de contrôleur série peut utiliser le paramètre Attributes pour créer un contexte pour l’objet de réception DMA système et fournir des pointeurs vers EvtCleanupCallback et EvtDestroyCallback fonctions appelées pour préparer l’objet à la suppression. Pour plus d’informations, consultez WDF_OBJECT_ATTRIBUTES.

Si le paramètre Attributes pointe vers une structure WDF_OBJECT_ATTRIBUTES, l’appelant ne doit pas remplacer les valeurs que la fonction d’initialisation WDF_OBJECT_ATTRIBUTES_INIT écrit dans le ParentObject, ExecutionLevelet SynchronizationScope membres de cette structure.

Pour plus d’informations sur la création d’objets system-DMA-receive, consultez SERCX2SYSTEMDMARECEIVE. Pour plus d’informations sur les transactions de réception système-DMA, consultez SerCx2 System-DMA-Receive Transactions.

Exigences

Exigence Valeur
client minimum pris en charge Disponible à partir de Windows 8.1.
plateforme cible Universel
d’en-tête sercx.h
IRQL PASSIVE_LEVEL

Voir aussi

DMA_ADAPTER

EvtCleanupCallback

EvtDestroyCallback

EvtDevicePrepareHardware

EvtDriverDeviceAdd

EvtSerCx2SystemDmaReceiveCancelNewDataNotification

EvtSerCx2SystemDmaReceiveCleanupTransaction

EvtSerCx2SystemDmaReceiveEnableNewDataNotification

EvtSerCx2SystemDmaReceiveInitializeTransaction

SERCX2SYSTEMDMARECEIVE

SERCX2_SYSTEM_DMA_RECEIVE_CONFIG

SERCX2_SYSTEM_DMA_RECEIVE_CONFIG_INIT

SERCX2_SYSTEM_DMA_RECEIVE_CONFIG_INIT_NEW_DATA_NOTIFICATION

SerCx2InitializeDevice

SerCx2PioReceiveCreate

WDF_OBJECT_ATTRIBUTES

WDF_OBJECT_ATTRIBUTES_INIT

WdfDmaEnablerWdmGetDmaAdapter