StorPortBuildScatterGatherList, fonction (storport.h)
La routine StorPortBuildScatterGatherList crée une liste de points/regroupements pour la mémoire tampon de données spécifiée.
Syntaxe
ULONG StorPortBuildScatterGatherList(
[in] PVOID HwDeviceExtension,
[in] PVOID Mdl,
[in] PVOID CurrentVa,
[in] ULONG Length,
[in] PPOST_SCATTER_GATHER_EXECUTE ExecutionRoutine,
[in] PVOID Context,
[in] BOOLEAN WriteToDevice,
[in, out] PVOID ScatterGatherBuffer,
[in] ULONG ScatterGatherBufferLength
);
Paramètres
[in] HwDeviceExtension
Pointeur vers l’extension de périphérique matériel pour l’adaptateur de bus hôte (HBA).
[in] Mdl
Pointeur vers une liste de descripteurs de mémoire (MDL) qui décrit les pages mémoire associées à la mémoire tampon de données.
[in] CurrentVa
Adresse virtuelle de la mémoire tampon de données.
[in] Length
Longueur, en octets, de la mémoire tampon de données.
[in] ExecutionRoutine
Pointeur vers un pilote miniport fourni ExecutionRoutine. Le pilote Storport appelle cette routine après avoir créé la liste de nuages de points/regroupements. Le pilote miniport doit effectuer toutes les opérations qui utilisent la liste de points/regroupements à l’intérieur de la routine d’exécution, et non dans le code qui suit l’appel à la routine StorPortBuildScatterGatherList.
Un ExecutionRoutine est déclaré comme suit :
VOID
ExecutionRoutine (
IN PVOID *DeviceObject,
IN PVOID *Irp,
IN PSTOR_SCATTER_GATHER_LIST ScatterGather,
IN PVOID Context
);
DeviceObject
Les pilotes miniport doivent ignorer ce paramètre.
Irp
Les pilotes miniport doivent ignorer ce paramètre.
ScatterGather
Pointeur vers une structure STOR_SCATTER_GATHER_LIST qui contient la liste de nuages de points/regroupements pour la mémoire tampon de données spécifiée.
Contexte
Valeur de contexte spécifiée dans le paramètre StorPortBuildScatterGatherList de la fonction Context.
Le pilote Storport appelle le ExecutionRoutine d’un pilote miniport à IRQL = DISPATCH_LEVEL.
[in] Context
Valeur de contexte que le pilote de port transmet à la routine d’exécution spécifiée dans le paramètre ExecutionRoutine. La routine d’exécution utilise cette valeur pour identifier de manière unique la requête.
[in] WriteToDevice
Valeur qui indique la direction du transfert DMA. Une valeur de TRUE indique un transfert de la mémoire tampon de données vers l’appareil, et une valeur de FALSE indique un transfert de l’appareil vers la mémoire tampon de données.
[in, out] ScatterGatherBuffer
Pointeur vers une mémoire tampon miniport fournie qui reçoit la liste de nuages de points/regroupements. Un pilote miniport peut allouer de la mémoire pour cette mémoire tampon en appelant la routine StorPortAllocatePool.
[in] ScatterGatherBufferLength
Taille, en octets, de la mémoire tampon pointée par le paramètre ScatterGatherBuffer.
Valeur de retour
StorPortBuildScatterGatherList retourne l’une des valeurs suivantes :
Retourner le code | Description |
---|---|
|
Cette fonction n’est pas implémentée sur le système d’exploitation actif. |
|
Indique que la routine a créé la liste de nuages de points/de collecte avec succès.
important voir « Remarques ».
|
|
Le HwDeviceExtension a été transmis NULL. |
|
L’appel a été effectué à un IRQL non valide. |
|
Le système dispose d’un nombre insuffisant de registres cartographiques disponibles pour le transfert. |
|
Le paramètre Length est trop grand pour s’adapter à la mémoire tampon. |
Remarques
Le pilote miniport appelle StorPortPutScatterGatherList pour libérer les ressources qui StorPortBuildScatterGatherList allouées lors de la construction de la liste de nuages de points/regroupements.
Le pilote miniport doit appeler StorPortPutScatterGatherList avant de libérer ou réutiliser la mémoire allouée pour la liste de points/regroupements.
Exigences
Exigence | Valeur |
---|---|
plateforme cible | Universel |
d’en-tête | storport.h (include Storport.h) |
IRQL | DISPATCH_LEVEL |