IWDFIoRequest2 ::RetrieveInputBuffer, méthode (wudfddi.h)
[Avertissement : UMDF 2 est la dernière version de UMDF et remplace UMDF 1. Tous les nouveaux pilotes UMDF doivent être écrits à l’aide de UMDF 2. Aucune nouvelle fonctionnalité n’est ajoutée à UMDF 1 et il existe une prise en charge limitée de UMDF 1 sur les versions plus récentes de Windows 10. Les pilotes Windows universels doivent utiliser UMDF 2. Pour plus d’informations, consultez Bien démarrer avec UMDF.]
La méthode RequestRetrieveInputBuffer récupère la mémoire tampon d’entrée d’une requête d’E/S.
Syntaxe
HRESULT RetrieveInputBuffer(
[in] SIZE_T MinimumRequiredCb,
[out] PVOID *Buffer,
[out, optional] SIZE_T *BufferCb
);
Paramètres
[in] MinimumRequiredCb
Taille minimale de la mémoire tampon, en octets, que le pilote doit traiter la requête d’E/S. Cette valeur peut être égale à zéro s’il n’y a pas de taille de mémoire tampon minimale.
[out] Buffer
Pointeur vers un emplacement qui reçoit l’adresse de la mémoire tampon.
[out, optional] BufferCb
Pointeur vers un emplacement qui reçoit la taille de la mémoire tampon, en octets. Ce paramètre est facultatif et peut être NULL.
Valeur de retour
RequestRetrieveInputBuffer retourne S_OK si l’opération réussit. Sinon, cette méthode peut retourner la valeur suivante :
Retourner le code | Description |
---|---|
|
La demande d’E/S n’a pas fourni de mémoire tampon d’entrée, ou la taille de la mémoire tampon d’entrée est inférieure à la taille minimale spécifiée par MinimumRequiredCb. |
|
La mémoire insuffisante est disponible pour récupérer la mémoire tampon. Le pilote doit terminer la demande avec une valeur d’état d’erreur. |
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’originateur de la requête fournie. Votre pilote peut appeler RequestRetrieveInputBuffer 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 RequestRetrieveInputBuffer récupère la mémoire tampon d’entrée pour les requêtes d’E/S qui utilisent les d’E/S mises en mémoire tampon ou méthode d' E/S directes pour accéder aux mémoires tampons de données.
Si RequestRetrieveInputBuffer retourne S_OK, le pilote reçoit l’adresse et, éventuellement, la taille de la mémoire tampon d’entrée.
Le pilote peut accéder à la mémoire tampon récupérée jusqu’à ce qu’elle termine la requête d’E/S.
Au lieu d’appeler RequestRetrieveInputBuffer, le pilote peut appeler IWDFIoRequest2 ::RetrieveInputMemory, ce qui crée un objet mémoire framework qui représente la mémoire tampon.
Pour plus d’informations sur l’accès aux mémoires tampons de données d’une requête d’E/S, consultez Accès aux mémoires tampons de données dans UMDF-Based Pilotes.
Exemples
L’exemple de code suivant montre un segment du pilote de port série IQueueCallbackDeviceIoControl ::OnDeviceIoControl fonction de rappel. À partir de la mémoire tampon d’entrée d’une requête d’E/S, le segment de code obtient le taux de baud qui doit être défini pour l’appareil.
VOID
STDMETHODCALLTYPE
CMyQueue::OnDeviceIoControl(
__in IWDFIoQueue* FxQueue,
__in IWDFIoRequest* FxRequest,
__in ULONG ControlCode,
__in SIZE_T InputBufferCb,
__in SIZE_T OutputBufferCb
)
{
PBYTE buffer;
SIZE_T bufferSize;
HRESULT hr;
//
// Declare an IWDFIoRequest2 interface pointer and obtain the
// IWDFIoRequest2 interface from the IWDFIoRequest interface.
//
CComQIPtr<IWDFIoRequest2> r2 = FxRequest;
switch (ControlCode)
{
case IOCTL_SERIAL_SET_BAUD_RATE:
{
//
// Obtain the baud rate from the write request's input buffer.
//
hr = r2->RetrieveInputBuffer(sizeof(SERIAL_BAUD_RATE),
(PVOID*) &buffer,
&bufferSize);
...
}
}
}
Exigences
Exigence | Valeur |
---|---|
fin du support | Indisponible dans UMDF 2.0 et versions ultérieures. |
plateforme cible | Bureau |
version minimale de UMDF | 1.9 |
d’en-tête | wudfddi.h (include Wudfddi.h) |
DLL | WUDFx.dll |
Voir aussi
IWDFIoRequest2 ::RetrieveInputMemory
IWDFIoRequest2 ::RetrieveOutputBuffer
IWDFIoRequest2 ::RetrieveOutputMemory