Metode IWDFIoTarget2::FormatRequestForQueryInformation (wudfddi.h)

[Peringatan: UMDF 2 adalah versi terbaru UMDF dan pengganti UMDF 1. Semua driver UMDF baru harus ditulis menggunakan UMDF 2. Tidak ada fitur baru yang ditambahkan ke UMDF 1 dan ada dukungan terbatas untuk UMDF 1 pada versi Windows 10 yang lebih baru. Driver Universal Windows harus menggunakan UMDF 2. Untuk informasi selengkapnya, lihat Mulai menggunakan UMDF.]

Metode FormatRequestForQueryInformation memformat permintaan I/O untuk mendapatkan informasi tentang file, tetapi tidak mengirim permintaan ke target I/O.

Sintaks

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

Penunjuk ke antarmuka IWDFIoRequest dari objek permintaan yang mewakili permintaan I/O.

[in] InformationClass

Nilai jenis WDF_FILE_INFORMATION_CLASS yang menentukan jenis informasi yang akan diperoleh.

[in, optional] pFile

Penunjuk ke antarmuka IWDFFile dari objek file yang terkait dengan permintaan I/O. Parameter ini diperlukan untuk target I/O lokal dan jarak jauh, dan bersifat opsional (dapat berupa NULL) untuk target I/O handel file.

[in, optional] pInformationMemory

Penunjuk ke antarmuka IWDFMemory dari objek memori. Objek ini mewakili buffer output, yang menerima informasi file yang ditentukan parameter InformationClass . Parameter ini bersifat opsional dan dapat berupa NULL.

[in, optional] pInformationMemoryOffset

Penunjuk ke struktur WDFMEMORY_OFFSET yang memasok offset byte opsional dan nilai panjang. Kerangka kerja menggunakan nilai-nilai ini untuk menentukan alamat dan panjang awal, dalam buffer output, untuk transfer data. Jika pointer ini ADALAH NULL, transfer data dimulai di awal buffer output, dan ukuran transfer adalah ukuran buffer.

Nilai kembali

FormatRequestForQueryInformation mengembalikan S_OK jika operasi berhasil. Jika tidak, metode mungkin mengembalikan nilai berikut:

Menampilkan kode Deskripsi
E_OUTOFMEMORY
Kerangka kerja tidak dapat mengalokasikan memori.
 

Metode ini mungkin mengembalikan salah satu nilai lain yang dikandung Winerror.h.

Keterangan

Gunakan metode FormatRequestForQueryInformation , diikuti oleh metode IWDFIoRequest::Send , untuk mengirim permintaan baik secara sinkron atau asinkron ke target I/O.

Contoh

Contoh kode berikut adalah bagian dari fungsi panggilan balik IQueueCallbackDefaultIoHandler::OnDefaultIoHandler . Jika fungsi panggilan balik menerima permintaan informasi kueri, fungsi tersebut mengirimkan permintaan ke target I/O default perangkat.

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

Persyaratan

Persyaratan Nilai
Akhir dukungan Tidak tersedia di UMDF 2.0 dan yang lebih baru.
Target Platform Desktop
Versi UMDF minimum 1.9
Header wudfddi.h (termasuk Wudfddi.h)
DLL WUDFx.dll

Lihat juga

IWDFIoTarget2

IWDFIoTarget2::FormatRequestForSetInformation