SerCx2SystemDmaTransmitCreate, fonction (sercx.h)
La méthode SerCx2SystemDmaTransmitCreate crée un objet de transmission système-DMA SerCx2, que la version 2 de l’extension de framework série (SerCx2) utilise pour effectuer des transactions de transmission système-DMA.
Syntaxe
NTSTATUS SerCx2SystemDmaTransmitCreate(
[in] WDFDEVICE Device,
[in] PSERCX2_SYSTEM_DMA_TRANSMIT_CONFIG SystemDmaTransmitConfig,
[in, optional] PWDF_OBJECT_ATTRIBUTES Attributes,
[out] SERCX2SYSTEMDMATRANSMIT *SystemDmaTransmit
);
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] SystemDmaTransmitConfig
Pointeur vers une structure SERCX2_SYSTEM_DMA_TRANSMIT_CONFIG. Avant d’appeler cette méthode, l’appelant doit appeler la fonction SERCX2_SYSTEM_DMA_TRANSMIT_CONFIG_INIT 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 transmission DMA système.
[in, optional] Attributes
Pointeur vers une structure WDF_OBJECT_ATTRIBUTES qui décrit les attributs à affecter au nouvel objet de transmission DMA système. 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] SystemDmaTransmit
Pointeur vers un emplacement vers lequel cette méthode écrit un handle SERCX2SYSTEMDMATRANSMIT dans l’objet de transmission 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 |
---|---|
|
Un objet de transmission DMA système existe déjà à partir d’un appel précédent SerCx2SystemDmaTransmitCreate ; ou un objet de transmission personnalisé existe à partir d’un appel précédent à la méthode SerCx2CustomTransmitCreate ; ou un objet de réception personnalisé existe à partir d’un appel précédent à la méthode SerCx2CustomReceiveCreate ; ou SerCx2PioTransmitCreate n’a pas encore été appelé pour créer un objet de transmission PIO. |
|
La valeur |
|
Une valeur de paramètre n’est pas valide. |
|
Les ressources insuffisantes sont disponibles pour créer l’objet de transmission system-DMA. |
Remarques
Votre pilote de contrôleur série peut cette méthode pour créer un objet de transmission DMA système. SerCx2 utilise cet objet pour effectuer des transactions de transmission DMA système, qui sont des transactions qui utilisent le contrôleur DMA système pour écrire des données dans le contrôleur série à transmettre.
En règle générale, un pilote de contrôleur série appelle SerCx2SystemDmaTransmitCreate à 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.
Le pilote du contrôleur série doit appeler correctement les méthodes SerCx2InitializeDevice et SerCx2PioTransmitCreate avant d’appeler SerCx2SystemDmaTransmitCreate.
Avant d’appeler SerCx2SystemDmaTransmitCreate, le pilote du contrôleur série doit appeler la fonction SERCX2_SYSTEM_DMA_TRANSMIT_CONFIG_INIT pour initialiser la structure SERCX2_SYSTEM_DMA_TRANSMIT_CONFIG pointée par SystemDmaTransmitConfig. Cette fonction définit les membres suivants de la structure sur zéro :
- MaximumScatterGatherFragments
- MinimumTransferUnitOverride
- DmaAlignment
- MinimumTransactionLength
- exclusif
- 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 la combinaison spécifiée de fonctions de rappel implémentées n’est pas valide, SerCx2SystemDmaTransmitCre ate échoue et retourne STATUS_INVALID_PARAMETER. Le pilote doit implémenter les trois ou aucun des
En guise d’option, un pilote de contrôleur série peut utiliser le paramètre 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 de transmission system-DMA, consultez SERCX2SYSTEMDMATRANSMIT. Pour plus d’informations sur les transactions de transmission DMA système, consultez SerCx2 System-DMA-Transmit 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
EvtSerCx2SystemDmaTransmitCancelDrainFifo
EvtSerCx2SystemDmaTransmitCleanupTransaction
EvtSerCx2SystemDmaTransmitDrainFifo
EvtSerCx2SystemDmaTransmitInitializeTransaction
EvtSerCx2SystemDmaTransmitPurgeFifo
SERCX2_SYSTEM_DMA_TRANSMIT_CONFIG