Metodo IWDFIoRequest::ForwardToIoQueue (wudfddi.h)
[Avviso: UMDF 2 è la versione più recente di UMDF e sostituisce UMDF 1. Tutti i nuovi driver UMDF devono essere scritti usando UMDF 2. Nessuna nuova funzionalità viene aggiunta a UMDF 1 ed è disponibile un supporto limitato per UMDF 1 nelle versioni più recenti di Windows 10. I driver di Windows universali devono usare UMDF 2. Per altre informazioni, vedere Introduzione con UMDF.]
Il metodo ForwardToIoQueue inoltra , ovvero riqueue , una richiesta di I/O a una delle code I/O del driver chiamante.
Sintassi
HRESULT ForwardToIoQueue(
[in] IWDFIoQueue *pDestination
);
Parametri
[in] pDestination
Puntatore all'interfaccia IWDFIoQueue per l'oggetto coda di destinazione.
Valore restituito
ForwardToIoQueue restituisce S_OK se l'operazione ha esito positivo. In caso contrario, questo metodo restituisce uno dei codici di errore definiti in Winerror.h.
Commenti
Il driver deve avere la richiesta di I/O e deve avere ottenuto la richiesta da una delle relative code di I/O.
Le code di origine e di destinazione non possono essere uguali. In altre parole, il driver non può chiamare ForwardToIoQueue per restituire una richiesta alla coda da cui proviene. Per restituire una richiesta di I/O alla coda di I/O da cui proviene, il driver può chiamare IWDFIoRequest2::Requeue.
Sia le code di origine che di destinazione devono appartenere allo stesso dispositivo.
Inoltre, il metodo ForwardToIoQueue non può ripetere una richiesta ottenuta chiamando il metodo IWDFIoQueue::RetrieveNextRequest .
Impossibile annullare la richiesta. Se il driver ha precedentemente chiamato il metodo IWDFIoRequest::MarkCancelable per rendere la richiesta annullabile, il driver deve chiamare il metodo IWDFIoRequest::UnmarkCancelable prima di chiamare ForwardToIoQueue.
Esempio
Nell'esempio di codice seguente viene illustrato come inoltrare una richiesta a un'altra coda se il buffer della richiesta non è sufficiente per contenere le informazioni necessarie.
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;
}
}
Requisiti
Requisito | Valore |
---|---|
Fine del supporto | Non disponibile in UMDF 2.0 e versioni successive. |
Piattaforma di destinazione | Desktop |
Versione UMDF minima | 1.5 |
Intestazione | wudfddi.h (include Wudfddi.h) |
DLL | WUDFx.dll |