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. UMDF 1 werden keine neuen Features hinzugefügt, und die Unterstützung für UMDF 1 in neueren 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 FormatRequestForSetInformation-Methode formatiert eine E/A-Anforderung, um Informationen zu einer Datei festzulegen, 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 typisierter Wert, der den Typ der festzulegenden 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 Eingabepuffer dar, der vom Treiber bereitgestellte Dateiinformationen enthält, 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 die 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 entspricht der 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 zuweisen.
 

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

Hinweise

Verwenden Sie die FormatRequestForSetInformation-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 Anforderung für festgelegte Informationen 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
UMDF-Mindestversion 1.9
Kopfzeile wudfddi.h (include Wudfddi.h)
DLL WUDFx.dll

Weitere Informationen

IWDFIoTarget2

IWDFIoTarget2::FormatRequestForQueryInformation