Partager via


Méthode IWDFIoRequest ::ForwardToIoQueue (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 ForwardToIoQueue transfère (c’est-à-dire remettant en file d’attente) une demande d’E/S vers l’une des files d’attente d’E/S du pilote appelant.

Syntaxe

HRESULT ForwardToIoQueue(
  [in] IWDFIoQueue *pDestination
);

Paramètres

[in] pDestination

Pointeur vers l’interface IWDFIoQueue pour l’objet file d’attente de destination.

Valeur retournée

ForwardToIoQueue retourne S_OK si l’opération réussit. Sinon, cette méthode retourne l’un des codes d’erreur définis dans Winerror.h.

Remarques

Le pilote doit être propriétaire de la demande d’E/S et doit avoir obtenu la demande à partir de l’une de ses files d’attente d’E/S.

Les files d’attente source et de destination ne peuvent pas être identiques. En d’autres termes, le pilote ne peut pas appeler ForwardToIoQueue pour retourner une requête à la file d’attente d’où elle provient. Pour renvoyer une demande d’E/S à la file d’attente d’E/S d’où elle provient, le pilote peut appeler IWDFIoRequest2 ::Requeue.

Les files d’attente source et de destination doivent appartenir au même appareil.

En outre, la méthode ForwardToIoQueue ne peut pas remettre en file d’attente une demande obtenue par le pilote en appelant la méthode IWDFIoQueue ::RetrieveNextRequest .

La demande ne peut pas être annulée. Si le pilote a précédemment appelé la méthode IWDFIoRequest ::MarkCancelable pour rendre la requête annulable, le pilote doit appeler la méthode IWDFIoRequest ::UnmarkCancelable avant d’appeler ForwardToIoQueue.

Exemples

L’exemple de code suivant montre comment transférer une requête vers une autre file d’attente si la mémoire tampon de la requête est insuffisante pour contenir les informations requises.

HRESULT hr;
 if (OutputBufferSizeInBytes < sizeof(SWITCH_STATE)) {
    hr = HRESULT_FROM_NT(ERROR_INSUFFICIENT_BUFFER);
 }
 else {
     hr = FxRequest->ForwardToIoQueue(
                          m_Device->GetSwitchChangeQueue()
                          );
     if (SUCCEEDED(hr)) {
         completeRequest = false;
     }
  }

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.5
En-tête wudfddi.h (inclure Wudfddi.h)
DLL WUDFx.dll

Voir aussi

IWDFIoQueue

IWDFIoQueue ::RetrieveNextRequest

IWDFIoRequest

IWDFIoRequest ::MarkCancelable

IWDFIoRequest ::UnmarkCancelable