Metodo IWDFIoTarget2::FormatRequestForQueryInformation (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. Non vengono aggiunte nuove funzionalità 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 info, vedi Introduzione con UMDF.]

Il metodo FormatRequestForQueryInformation formatta una richiesta di I/O per ottenere informazioni su un file, ma non invia la richiesta a una destinazione di I/O.

Sintassi

HRESULT FormatRequestForQueryInformation(
  [in]           IWDFIoRequest              *pRequest,
  [in]           WDF_FILE_INFORMATION_CLASS InformationClass,
  [in, optional] IWDFFile                   *pFile,
  [in, optional] IWDFMemory                 *pInformationMemory,
  [in, optional] PWDFMEMORY_OFFSET          pInformationMemoryOffset
);

Parametri

[in] pRequest

Puntatore all'interfaccia IWDFIoRequest dell'oggetto richiesta che rappresenta la richiesta di I/O.

[in] InformationClass

Valore tipizzato WDF_FILE_INFORMATION_CLASS che specifica il tipo di informazioni da ottenere.

[in, optional] pFile

Puntatore all'interfaccia IWDFFile dell'oggetto file associato alla richiesta di I/O. Questo parametro è obbligatorio per le destinazioni di I/O locali e remote ed è facoltativo (può essere NULL) per le destinazioni di I/O di gestione file.

[in, optional] pInformationMemory

Puntatore all'interfaccia IWDFMemory di un oggetto memoria. Questo oggetto rappresenta il buffer di output, che riceve le informazioni sul file specificate dal parametro InformationClass . Questo parametro è facoltativo e può essere NULL.

[in, optional] pInformationMemoryOffset

Puntatore a una struttura WDFMEMORY_OFFSET che fornisce valori facoltativi di offset di byte e lunghezza. Il framework usa questi valori per determinare l'indirizzo iniziale e la lunghezza, all'interno del buffer di output, per il trasferimento dei dati. Se questo puntatore è NULL, il trasferimento dei dati inizia all'inizio del buffer di output e le dimensioni del trasferimento sono le dimensioni del buffer.

Valore restituito

FormatRequestForQueryInformation restituisce S_OK se l'operazione ha esito positivo. In caso contrario, il metodo potrebbe restituire il valore seguente:

Codice restituito Descrizione
E_OUTOFMEMORY
Il framework non è riuscito ad allocare memoria.
 

Questo metodo potrebbe restituire uno degli altri valori contenuti da Winerror.h.

Commenti

Usa il metodo FormatRequestForQueryInformation , seguito dal metodo IWDFIoRequest::Send , per inviare richieste in modo sincrono o asincrono a una destinazione di I/O.

Esempio

L'esempio di codice seguente fa parte di una funzione di callback IQueueCallbackDefaultIoHandler::OnDefaultIoHandler . Se la funzione di callback riceve una richiesta di informazioni di query, invia la richiesta alla destinazione di I/O predefinita del dispositivo.

void
CMyQueue::OnDefaultIoHandler(
 IWDFIoQueue*  pQueue,
 IWDFIoRequest*  pRequest
    )
{
    HRESULT hr;
    IWDFDevice *pDevice;
    IWDFIoTarget *pTarget;
    IWDFFile *pFile;
    IWDFMemory *pOutMemory;
    WDF_FILE_INFORMATION_CLASS infoClass;

    //
    // Obtain the device, default I/O target, and file object.
    //
    pQueue->GetDevice(&pDevice);
    pDevice->GetDefaultIoTarget(&pTarget);
    pRequest->GetFileObject(&pFile);

    if (WdfRequestQueryInformation==pRequest->GetType())
    {
        //
        // Declare an IWDFIoRequest2 interface pointer and obtain the
        // IWDFIoRequest2 interface from the IWDFIoRequest interface.
        //
        CComQIPtr<IWDFIoRequest2> r2 = pRequest;

        // 
        // Declare an IWDFIoTarget2 interface pointer and obtain the
        // IWDFIoTarget2 interface from the IWDFIoTarget interface.
        //
        CComQIPtr<IWDFIoTarget2> target2(pTarget);

        // 
        // Get the I/O request's output buffer.
        // 
        hr = pWdfRequest2->RetrieveOutputMemory(&pOutMemory);
        if (!SUCCEEDED(hr)) goto Error;

        // 
        // Get the I/O request's parameters.
        // 
        hr = pWdfRequest2->GetQueryInformationParameters(&infoClass,
                                                         NULL);
        if (!SUCCEEDED(hr)) goto Error;

        //
        // Format a query information request and send it to the I/O target.
        //
        hr = target2->FormatRequestForQueryInformation(pRequest,
                                                       infoClass,
                                                       pFile,
                                                       pOutMemory,
                                                       NULL);
        if (!SUCCEEDED(hr)) goto Error;
        hr = pRequest->Send(pTarget,
                            WDF_REQUEST_SEND_OPTION_SYNCHRONOUS,
                            0);
    }
...
Error;
    //
    // Release objects.
    //
    SAFE_RELEASE(pDevice);
    SAFE_RELEASE(pTarget);
    SAFE_RELEASE(pFile);
    SAFE_RELEASE(pOutMemory);
}

Requisiti

Requisito Valore
Fine del supporto Non disponibile in UMDF 2.0 e versioni successive.
Piattaforma di destinazione Desktop
Versione UMDF minima 1,9
Intestazione wudfddi.h (include Wudfddi.h)
DLL WUDFx.dll

Vedi anche

IWDFIoTarget2

IWDFIoTarget2::FormatRequestForSetInformation