Bagikan melalui


Metode IWDFDevice::CreateRequest (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 CreateRequest membuat objek permintaan yang tidak diformat.

Sintaks

HRESULT CreateRequest(
  [in, optional] IUnknown      *pCallbackInterface,
  [in, optional] IWDFObject    *pParentObject,
  [out]          IWDFIoRequest **ppRequest
);

Parameter

[in, optional] pCallbackInterface

Penunjuk ke antarmuka IUnknown yang digunakan kerangka kerja untuk menentukan fungsi panggilan balik peristiwa terkait objek yang berlangganan driver pada objek permintaan yang baru dibuat. Parameter ini bersifat opsional. Driver dapat melewati NULL jika driver tidak memerlukan pemberitahuan. Jika driver melewati pointer yang valid, kerangka kerja akan memanggil QueryInterface pada antarmuka IUnknown untuk antarmuka IObjectCleanup . Jika kerangka kerja mendapatkan antarmuka IObjectCleanup driver, kerangka kerja kemudian dapat memanggil metode IObjectCleanup driver::OnCleanup untuk memberi tahu driver bahwa objek permintaan dibersihkan.

[in, optional] pParentObject

Penunjuk ke antarmuka IWDFObject untuk objek induk dari objek permintaan I/O yang dibuat. Jika NULL, objek perangkat menjadi induk default.

[out] ppRequest

Pointer ke variabel yang menerima pointer ke antarmuka IWDFIoRequest untuk objek permintaan baru.

Mengembalikan nilai

CreateRequest mengembalikan S_OK jika operasi berhasil. Jika tidak, metode ini mengembalikan salah satu kode kesalahan yang didefinisikan dalam Winerror.h.

Keterangan

Sebelum driver UMDF menggunakan objek permintaan yang dibuat CreateRequest , driver harus memformat objek permintaan. Untuk memformat objek permintaan I/O, driver memanggil salah satu metode berikut:

Jika driver memanggil CreateRequest untuk membuat objek permintaan, driver tidak boleh memanggil IWDFIoRequest::Complete untuk objek permintaan. Sebagai gantinya, driver harus memanggil IWDFObject::D eleteWdfObject setelah selesai menggunakan objek permintaan. Untuk informasi selengkapnya, lihat Menyelesaikan Permintaan I/O.

Jika NULL ditentukan dalam parameter pParentObject , objek perangkat menjadi objek induk default untuk objek permintaan I/O yang baru dibuat. Jika driver UMDF membuat objek permintaan I/O yang digunakan driver dengan objek antrean I/O tertentu atau objek permintaan I/O lainnya, driver harus mengatur antrean atau objek permintaan tersebut sebagai objek induk objek permintaan yang dibuat. Ketika objek induk dihapus, objek permintaan yang dibuat akan dihapus.

Contoh

Contoh kode berikut menunjukkan cara membuat permintaan, memformat permintaan untuk membaca, dan mengirim permintaan.

HRESULT
CUmdfHidDevice::SendInterruptPipeRead(
    VOID
    )
{
    CComPtr<IWDFDevice> wdfDevice;

    HRESULT hr;

    IWDFFile *pTargetFile = NULL;

    // Allocate a new WDF request to send on the interrupt pipe.
    GetWdfDevice(&wdfDevice);
    hr = wdfDevice->CreateRequest(
                                  static_cast<IObjectCleanup*>(this), 
                                  wdfDevice, 
                                  &m_InterruptReadRequest
                                  );

    if (SUCCEEDED(hr))
    {
        m_InterruptPipe->GetTargetFile(&pTargetFile);
        hr = m_InterruptPipe->FormatRequestForRead(
                                                   m_InterruptReadRequest,
                                                   pTargetFile,
                                                   m_ReadMemory,
                                                   NULL,
                                                   NULL
                                                   );
    }

    // Issue the read to the pipe.
    if (SUCCEEDED(hr))
    {
        hr = m_InterruptReadRequest->Send(m_InterruptPipe, 0, 0);
    }

    return hr;
}

Persyaratan

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

Lihat juga

IWDFDevice

IWDFIoRequest

IWDFIoTarget::FormatRequestForIoctl

IWDFIoTarget::FormatRequestForRead

IWDFIoTarget::FormatRequestForWrite

IWDFObject