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) |