Méthode IWDFIoRequest2 ::RetrieveInputMemory (wudfddi.h)
[Avertissement : UMDF 2 est la dernière version d’UMDF et remplace UMDF 1. Tous les nouveaux pilotes UMDF doivent être écrits à l’aide d’UMDF 2. Aucune nouvelle fonctionnalité n’est ajoutée à UMDF 1 et la prise en charge d’UMDF 1 est limitée sur les versions plus récentes de Windows 10. Les pilotes Windows universels doivent utiliser UMDF 2. Pour plus d’informations, consultez Prise en main avec UMDF.]
La méthode RetrieveInputMemory récupère l’interface IWDFMemory d’un objet de mémoire d’infrastructure qui représente la mémoire tampon d’entrée d’une requête d’E/S.
Syntaxe
HRESULT RetrieveInputMemory(
[out] IWDFMemory **Memory
);
Paramètres
[out] Memory
Adresse d’un emplacement qui reçoit un pointeur vers l’interface IWDFMemory d’un objet mémoire UMDF.
Valeur retournée
RetrieveInputMemory retourne S_OK si l’opération réussit. Sinon, cette méthode peut retourner la valeur suivante :
Code de retour | Description |
---|---|
|
La demande d’E/S n’a pas fourni de mémoire tampon de sortie. |
|
La mémoire disponible est insuffisante pour récupérer la mémoire tampon. Le pilote doit terminer la requête avec une erreur status valeur. |
Cette méthode peut retourner l’une des autres valeurs que Winerror.h contient.
Remarques
La mémoire tampon d’entrée d’une requête contient des informations, telles que les données à écrire sur un disque, que l’initiateur de la requête a fournies. Votre pilote peut appeler RetrieveInputMemory pour obtenir la mémoire tampon d’entrée pour une demande d’écriture ou une demande de contrôle d’E/S d’appareil, mais pas pour une demande de lecture (car les demandes de lecture ne fournissent pas de données d’entrée).
La méthode RetrieveInputMemory récupère la mémoire tampon d’entrée pour les demandes d’E/S qui utilisent la méthode d’E/S en mémoire tampon ou d’E/S directes pour accéder aux mémoires tampons de données.
Si RetrieveInputMemory retourne S_OK, le pilote reçoit un pointeur vers l’interface IWDFMemory d’un objet mémoire UMDF qui représente la mémoire tampon d’entrée. Pour accéder à la mémoire tampon, le pilote doit appeler IWDFMemory ::GetDataBuffer.
Le pilote peut accéder à l’objet de mémoire du framework récupéré jusqu’à ce qu’il termine la demande d’E/S. Avant que le pilote termine la demande d’E/S, il doit appeler IWDFMemory ::Release.
Au lieu d’appeler RetrieveInputMemory, le pilote peut appeler IWDFIoRequest2 ::RetrieveInputBuffer, qui récupère l’adresse et la longueur de la mémoire tampon.
Pour plus d’informations sur l’accès aux mémoires tampons de données d’une demande d’E/S, consultez Accès aux mémoires tampons de données dans les pilotes UMDF-Based.
Exemples
L’exemple de code suivant montre comment une fonction de rappel IQueueCallbackWrite ::OnWrite peut obtenir l’interface IWDFMemory de l’objet mémoire du framework qui représente la mémoire tampon d’entrée d’une demande d’écriture. L’exemple met ensuite en forme et envoie la demande d’écriture à une cible d’E/S USB.
VOID
STDMETHODCALLTYPE
CMyQueue::OnWrite(
__in IWDFIoQueue *pWdfQueue,
__in IWDFIoRequest *pWdfRequest,
__in SIZE_T BytesToWrite
)
{
HRESULT hr = S_OK;
IWDFMemory * pInputMemory = NULL;
IWDFUsbTargetPipe * pOutputPipe = m_Device->GetOutputPipe();
//
// Declare an IWDFIoRequest2 interface pointer and obtain the
// IWDFIoRequest2 interface from the IWDFIoRequest interface.
//
CComQIPtr<IWDFIoRequest2> r2 = pWdfRequest;
hr = r2->RetrieveInputMemory(&pInputMemory);
if (FAILED(hr)) goto Exit;
hr = pOutputPipe->FormatRequestForWrite(
pWdfRequest,
NULL, //pFile
pInputMemory,
NULL, //Memory offset
NULL //DeviceOffset
);
Exit:
if (FAILED(hr))
{
pWdfRequest->Complete(hr);
}
else
{
ForwardFormattedRequest(pWdfRequest, pOutputPipe);
}
SAFE_RELEASE(pInputMemory);
return;
}
Configuration requise
Condition requise | Valeur |
---|---|
Fin de la prise en charge | Non disponible dans UMDF 2.0 et versions ultérieures. |
Plateforme cible | Desktop (Expérience utilisateur) |
Version UMDF minimale | 1,9 |
En-tête | wudfddi.h (inclure Wudfddi.h) |
DLL | WUDFx.dll |
Voir aussi
IWDFIoRequest2 ::RetrieveInputBuffer
IWDFIoRequest2 ::RetrieveOutputBuffer
IWDFIoRequest2 ::RetrieveOutputMemory
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour