IWDFIoRequest ::ForwardToIoQueue, 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 ForwardToIoQueue transfère (autrement dit, requeue) une requête d’E/S à 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 de file d’attente de destination.
Valeur de retour
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 posséder 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 renvoyer une requête à la file d’attente à partir de laquelle il provient. Pour renvoyer une requête d’E/S à la file d’attente d’E/S à partir de laquelle 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 renvoyer une requête que le pilote a obtenue en appelant la méthode IWDFIoQueue ::RetrieveNextRequest.
Impossible d’annuler la requête. 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 demande 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;
}
}
Exigences
Exigence | Valeur |
---|---|
fin du support | Indisponible dans UMDF 2.0 et versions ultérieures. |
plateforme cible | Bureau |
version minimale de UMDF | 1.5 |
d’en-tête | wudfddi.h (include Wudfddi.h) |
DLL | WUDFx.dll |
Voir aussi
IWDFIoQueue ::RetrieveNextRequest