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 |
---|---|
|
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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk