Freigeben über


IWDFIoTarget2::FormatRequestForQueryInformation-Methode (wudfddi.h)

[Warnung: UMDF 2 ist die neueste Version von UMDF und ersetzt UMDF 1. Alle neuen UMDF-Treiber sollten mit UMDF 2 geschrieben werden. UMDF 1 werden keine neuen Features hinzugefügt, und die Unterstützung für UMDF 1 für neuere Versionen von Windows 10 ist eingeschränkt. Universelle Windows-Treiber müssen UMDF 2 verwenden. Weitere Informationen finden Sie unter Erste Schritte mit UMDF.]

Die FormatRequestForQueryInformation-Methode formatiert eine E/A-Anforderung, um Informationen zu einer Datei abzurufen, sendet die Anforderung jedoch nicht an ein E/A-Ziel.

Syntax

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

Parameter

[in] pRequest

Ein Zeiger auf die IWDFIoRequest-Schnittstelle des Anforderungsobjekts, das die E/A-Anforderung darstellt.

[in] InformationClass

Ein WDF_FILE_INFORMATION_CLASS typisierter Wert, der den Typ der abzurufenden Informationen angibt.

[in, optional] pFile

Ein Zeiger auf die IWDFFile-Schnittstelle des Dateiobjekts, das der E/A-Anforderung zugeordnet ist. Dieser Parameter ist für lokale und Remote-E/A-Ziele erforderlich und optional (kann NULL sein) für Dateihandle-E/A-Ziele.

[in, optional] pInformationMemory

Ein Zeiger auf die IWDFMemory-Schnittstelle eines Speicherobjekts. Dieses Objekt stellt den Ausgabepuffer dar, der die Dateiinformationen empfängt, die der InformationClass-Parameter angibt. Dieser Parameter ist optional und kann NULL sein.

[in, optional] pInformationMemoryOffset

Ein Zeiger auf eine WDFMEMORY_OFFSET-Struktur , die optionale Byteoffset- und Längenwerte bereitstellt. Das Framework verwendet diese Werte, um die Anfangsadresse und Länge innerhalb des Ausgabepuffers für die Datenübertragung zu bestimmen. Wenn dieser Zeiger NULL ist, beginnt die Datenübertragung am Anfang des Ausgabepuffers, und die Übertragungsgröße entspricht der Puffergröße.

Rückgabewert

FormatRequestForQueryInformation gibt S_OK zurück, wenn der Vorgang erfolgreich ist. Andernfalls gibt die Methode möglicherweise den folgenden Wert zurück:

Rückgabecode Beschreibung
E_OUTOFMEMORY
Das Framework konnte keinen Arbeitsspeicher zuweisen.
 

Diese Methode gibt möglicherweise einen der anderen Werte zurück, die Winerror.h enthält.

Hinweise

Verwenden Sie die FormatRequestForQueryInformation-Methode , gefolgt von der IWDFIoRequest::Send-Methode , um Anforderungen entweder synchron oder asynchron an ein E/A-Ziel zu senden.

Beispiele

Das folgende Codebeispiel ist Teil einer IQueueCallbackDefaultIoHandler::OnDefaultIoHandler-Rückruffunktion . Wenn die Rückruffunktion eine Abfrageinformationsanforderung empfängt, sendet sie die Anforderung an das Standard-E/A-Ziel des Geräts.

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);
}

Anforderungen

Anforderung Wert
Ende des Supports In UMDF 2.0 und höher nicht verfügbar.
Zielplattform Desktop
UMDF-Mindestversion 1.9
Kopfzeile wudfddi.h (include Wudfddi.h)
DLL WUDFx.dll

Weitere Informationen

IWDFIoTarget2

IWDFIoTarget2::FormatRequestForSetInformation