Partager via


PBUILD_MDL_FROM_SCATTER_GATHER_LIST fonction de rappel (wdm.h)

La routine BuildMdlFromScatterGatherList génère un MDL à partir d’une liste de points/regroupement allouée par le système.

Cette routine est réservée à l’utilisation du système.

Syntaxe

PBUILD_MDL_FROM_SCATTER_GATHER_LIST PbuildMdlFromScatterGatherList;

NTSTATUS PbuildMdlFromScatterGatherList(
  [in]  PDMA_ADAPTER DmaAdapter,
  [in]  PSCATTER_GATHER_LIST ScatterGather,
  [in]  PMDL OriginalMdl,
  [out] PMDL *TargetMdl
)
{...}

Paramètres

[in] DmaAdapter

Pointeur vers la structure DMA_ADAPTER retournée par IoGetDmaAdapter qui représente l’adaptateur master bus ou le contrôleur DMA.

[in] ScatterGather

Pointeur vers la structure SCATTER_GATHER_LIST passée à la routine AdapterListControl du pilote.

[in] OriginalMdl

Pointeur vers le MDL d’origine utilisé par le pilote pour générer la liste de points/regroupements.

[out] TargetMdl

Pointeur vers une variable que la routine utilise pour renvoyer le MDL créé pour contenir la mémoire tampon décrite par la liste de points/regroupements. La valeur retournée peut être identique à OriginalMdl.

Valeur retournée

BuildMdlFromScatterGatherList retourne l’un des codes status suivants :

Code de retour Description
STATUS_SUCCESS L’opération a réussi.
STATUS_INVALID_PARAMETER Le paramètre OriginalMdl a la valeur NULL.
STATUS_INSUFFICIENT_RESOURCES Il n’y a pas assez de mémoire disponible pour allouer une nouvelle MDL.
STATUS_NONE_MAPPED Le système a déjà créé une mdl pour les emplacements de mémoire dans la liste de points/regroupements. (Cela se produit uniquement si la routine est appelée deux fois sur la même liste de points/regroupements.)

Remarques

BuildMdlFromScatterGatherList n’est pas une routine système qui peut être appelée directement par nom. Cette routine peut être appelée uniquement par un pointeur à partir de l’adresse retournée dans une structure de DMA_OPERATIONS . Les pilotes obtiennent l’adresse de cette routine en appelant IoGetDmaAdapter avec le membre Version du paramètre DeviceDescription défini sur DEVICE_DESCRIPTION_VERSION2. Si IoGetDmaAdapter retourne NULL, la routine n’est pas disponible sur votre plateforme.

Lorsqu’un pilote crée une liste de points/regroupements pour écrire sur un appareil, le système peut effectuer une copie des données à écrire et utiliser cette copie pour effectuer l’opération DMA. Utilisez cette routine pour accéder aux emplacements de mémoire dans la liste de points/regroupements, qu’il s’agisse ou non d’une copie.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Disponible dans Windows XP et les versions ultérieures de Windows.
Plateforme cible Desktop (Expérience utilisateur)
En-tête wdm.h (inclure Wdm.h)
IRQL <= DISPATCH_LEVEL
Règles de conformité DDI IrqlDispatch(wdm)

Voir aussi

BuildScatterGatherList

DEVICE_DESCRIPTION

DMA_ADAPTER

DMA_OPERATIONS

IoGetDmaAdapter

SCATTER_GATHER_LIST