Bagikan melalui


Metode IWDFIoTarget2::FormatRequestForFlush (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 FormatRequestForFlush membangun permintaan I/O untuk operasi flush tetapi tidak mengirim permintaan ke target I/O.

Sintaks

HRESULT FormatRequestForFlush(
  [in]           IWDFIoRequest *pRequest,
  [in, optional] IWDFFile      *pFile
);

Parameter

[in] pRequest

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

[in, optional] pFile

Penunjuk ke antarmuka IWDFFile dari objek file yang terkait dengan permintaan I/O. Parameter ini bersifat opsional dan dapat berupa NULL, tetapi diperlukan untuk target I/O default.

Nilai kembali

FormatRequestForFlush mengembalikan S_OK jika operasi berhasil. Jika tidak, metode mungkin mengembalikan salah satu 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

Beberapa driver harus membersihkan buffer cache yang ada di driver yang lebih rendah atau perangkat. Misalnya, driver yang ada di tumpukan driver untuk perangkat serial atau perangkat penyimpanan mungkin mendukung operasi ini.

Gunakan metode FormatRequestForFlush , diikuti oleh metode IWDFIoRequest::Send , untuk mengirim permintaan flush baik secara sinkron atau asinkron.

Contoh

Contoh kode berikut adalah bagian dari fungsi panggilan balik IQueueCallbackDefaultIoHandler::OnDefaultIoHandler . Jika fungsi panggilan balik menerima permintaan flush, 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;

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

    if (WdfRequestFlushBuffers==pRequest->GetType())
    {
        // 
        // Declare an IWDFIoTarget2 interface pointer and obtain the
        // IWDFIoTarget2 interface from the IWDFIoTarget interface.
        //
        CComQIPtr<IWDFIoTarget2> target2(pTarget);

        //
        // Format a flush request and send it to the I/O target.
        //
        hr = target2->FormatRequestForFlush(pRequest, 
                                            pFile);

        if (SUCCEEDED(hr))
        {
            hr = pRequest->Send(pTarget,
                                WDF_REQUEST_SEND_OPTION_SYNCHRONOUS,
                                0);
        }
    }
...
    //
    // Release objects.
    //
    SAFE_RELEASE(pDevice);
    SAFE_RELEASE(pTarget);
    SAFE_RELEASE(pFile);
}

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

IQueueCallbackDefaultIoHandler::OnDefaultIoHandler

IWDFIoRequest::Send

IWDFIoTarget2