SpbRequestGetTransferParameters, fonction (spbcx.h)
La méthode SpbRequestGetTransferParameters récupère les paramètres de transfert d’un transfert individuel dans une séquence de transfert d’E/S.
Syntaxe
void SpbRequestGetTransferParameters(
[in] SPBREQUEST SpbRequest,
[in] ULONG Index,
[out, optional] SPB_TRANSFER_DESCRIPTOR *TransferDescriptor,
[out, optional] PMDL *TransferBuffer
);
Paramètres
[in] SpbRequest
Un handle SPBREQUEST à la demande d’E/S à partir de laquelle récupérer les paramètres de transfert. Ce paramètre doit être un handle pour une demande de IOCTL_SPB_EXECUTE_SEQUENCE .
[in] Index
Index d’un transfert dans la séquence de transfert d’E/S. Pour plus d'informations, consultez la section Notes qui suit.
[out, optional] TransferDescriptor
Pointeur vers une structure de SPB_TRANSFER_DESCRIPTOR allouée par l’appelant dans laquelle la méthode écrit les paramètres de transfert. Le paramètre TransferDescriptor est facultatif et peut être spécifié comme NULL si l’appelant n’a pas besoin des paramètres de transfert. Pour plus d’informations, consultez la section Remarques.
[out, optional] TransferBuffer
Pointeur vers un emplacement dans lequel la méthode écrit un pointeur vers une MDL (ou une chaîne MDL) qui décrit la mémoire physique dans la mémoire tampon de transfert. L’appelant ne doit pas modifier le contenu de cette MDL. Ce paramètre est facultatif et peut être défini sur NULL si la MDL n’est pas nécessaire. Pour plus d'informations, consultez la section Notes qui suit.
Valeur de retour
None
Remarques
Pour demander une séquence de transfert d’E/S, un client (pilote périphérique) du pilote de contrôleur SPB envoie une demande de IOCTL_SPB_EXECUTE_SEQUENCE qui contient une liste des transferts dans la séquence. Votre pilote de contrôleur peut appeler SpbRequestGetTransferParameters pour obtenir des informations sur un transfert particulier dans la séquence.
Le paramètre Index est un index qui identifie un transfert particulier dans la séquence. Si N est le nombre de transferts dans la séquence, les index valides vont de 0 à N–1. Pour déterminer le nombre de transferts dans la séquence, appelez la méthode SpbRequestGetParameters . Cette méthode récupère une structure de SPB_TRANSFER_DESCRIPTOR qui contient les paramètres de requête. Le membre TransferCount de cette structure spécifie le nombre de transferts dans la séquence.
Si TransferDescriptor n’a pas la valeur NULL, l’appelant doit appeler la fonction SPB_TRANSFER_DESCRIPTOR_INIT pour initialiser la structure avant d’appeler SpbRequestGetTransferParameters. Une fois la structure initialisée, elle peut être réutilisée autant de fois que nécessaire sans être réinitialisée.
TransferBuffer est un pointeur facultatif dans lequel SpbRequestGetTransferParameters écrit un pointeur vers une MDL qui décrit la mise en page physique de la mémoire tampon de transfert. La mémoire tampon de transfert peut être décrite par une seule MDL ou par une chaîne MDL. Une mémoire tampon simple, qui se compose d’un bloc contigu de mémoire virtuelle, est décrite par une seule MDL. Si une mémoire tampon de transfert est mise en forme en tant que liste de nuages de points, chaque bloc contigu de mémoire virtuelle dans la mémoire tampon est décrit par une MDL dans une chaîne MDL. Pour plus d’informations sur les DLL, consultez Utilisation de MDL.
Exemples
//
// Note that this snippet shows a transfer completing synchronously. This
// is a horrible thing for a driver to do, but demonstrates the DDI nicely.
//
WDF_REQUEST_PARAMETERS parameters;
WDF_TRANSFER_DESCRIPTOR transfer;
WDF_REQUEST_PARAMETERS_INIT(¶meters);
WDF_TRANSFER_DESCRIPTOR_INIT(&transfer);
SpbRequestGetParameters(request, ¶meters);
for (ULONG i = 0; i < parameters.SequenceCount; i += 1)
{
WDFMEMORY buffer;
SpbRequestGetTransferParameters(request, i, &transfer, &buffer);
MyDriverPerformTransfer(deviceContext,
request,
transfer,
buffer);
}
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Disponible à partir de Windows 8. |
Plateforme cible | Universal |
En-tête | spbcx.h |
Bibliothèque | Spbcxstubs.lib |
IRQL | <= DISPATCH_LEVEL |