fonction de rappel PBUILD_MDL_FROM_SCATTER_GATHER_LIST (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.
PBUILD_MDL_FROM_SCATTER_GATHER_LIST PbuildMdlFromScatterGatherList;
NTSTATUS PbuildMdlFromScatterGatherList(
[in] PDMA_ADAPTER DmaAdapter,
[in] PSCATTER_GATHER_LIST ScatterGather,
[in] PMDL OriginalMdl,
[out] PMDL *TargetMdl
)
{...}
[in] DmaAdapter
Pointeur vers la structure DMA_ADAPTER retournée par IoGetDmaAdapter qui représente l’adaptateur maître de 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 nuages de points/regroupements.
[out] TargetMdl
Pointeur vers une variable utilisée pour renvoyer le MDL créé pour contenir la mémoire tampon décrite par la liste de nuages de points/regroupements. La valeur retournée peut être identique à OriginalMdl.
BuildMdlFromScatterGatherList retourne l’un des codes d’état suivants :
Retourner le code | Description |
---|---|
STATUS_SUCCESS | L’opération a réussi. |
STATUS_INVALID_PARAMETER | Le paramètre OriginalMdl est NULL. |
STATUS_INSUFFICIENT_RESOURCES | Il n’y a pas suffisamment de mémoire disponible pour allouer un nouveau MDL. |
STATUS_NONE_MAPPED | Le système a déjà créé un MDL pour les emplacements de mémoire dans la liste de nuages de points/regroupements. (Cela se produit uniquement si la routine est appelée deux fois sur la même liste de points/regroupements.) |
BuildMdlFromScatterGatherList n’est pas une routine système qui peut être appelée directement par nom. Cette routine peut être appelée uniquement par le pointeur de l’adresse retournée dans une structure 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 nuages/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 nuages de points/regroupements, que ces emplacements soient une copie.
Exigence | Valeur |
---|---|
client minimum pris en charge | Disponible dans Windows XP et versions ultérieures de Windows. |
plateforme cible | Bureau |
d’en-tête | wdm.h (include Wdm.h) |
IRQL | <= DISPATCH_LEVEL |
règles de conformité DDI | irqlDispatch(wdm) |