Freigeben über


IWDFIoTarget2::FormatRequestForSetInformation-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. Es werden keine neuen Features zu UMDF 1 hinzugefügt, und es gibt eingeschränkte Unterstützung für UMDF 1 für neuere Versionen von Windows 10. Universelle Windows-Treiber müssen UMDF 2 verwenden. Weitere Informationen finden Sie unter Erste Schritte mit UMDF-.]

Die FormatRequestForSetInformation- Methode formatiert eine E/A-Anforderung zum Festlegen von Informationen zu einer Datei, sendet die Anforderung jedoch nicht an ein E/A-Ziel.

Syntax

HRESULT FormatRequestForSetInformation(
  [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-typed-Wert, der den festzulegenden Informationstyp 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-Zieleerforderlich und ist optional (kann NULL-) für Dateihandle-E/A-Ziele sein.

[in, optional] pInformationMemory

Ein Zeiger auf die IWDFMemory Schnittstelle eines Speicherobjekts. Dieses Objekt stellt den Eingabepuffer dar, der vom Treiber bereitgestellte Dateiinformationen enthält, die vom InformationClass Parameter angegeben werden. Dieser Parameter ist optional und kann NULL-werden.

[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 Eingabepuffers für die Datenübertragung zu bestimmen. Wenn dieser Zeiger NULL-ist, beginnt die Datenübertragung am Anfang des Eingabepuffers, und die Übertragungsgröße ist die Puffergröße.

Rückgabewert

FormatRequestForSetInformation 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 arbeitsspeicher nicht zuordnen.
 

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

Bemerkungen

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

Beispiele

Das folgende Codebeispiel ist Teil einer IQueueCallbackDefaultIoHandler::OnDefaultIoHandler Rückruffunktion. Wenn die Rückruffunktion eine festgelegte Informationsanforderung 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 *pInMemory;
    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 input buffer.
        // 
        hr = pWdfRequest2->RetrieveInputMemory(&pInMemory);
        if (!SUCCEEDED(hr)) goto Error;

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

        //
        // Format a query information request and send it to the I/O target.
        //
        hr = target2->FormatRequestForSetInformation(pRequest,
                                                     infoClass,
                                                     pFile,
                                                     pInMemory,
                                                     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
Mindest-UMDF-Version 1.9
Header- wudfddi.h (include Wudfddi.h)
DLL- WUDFx.dll

Siehe auch

IWDFIoTarget2

IWDFIoTarget2::FormatRequestForQueryInformation