Metode IDXGIDevice2::EnqueueSetEvent (dxgi1_2.h)

Menghapus perintah penyajian yang luar biasa dan mengatur objek peristiwa yang ditentukan ke status yang disinyalkan setelah semua perintah penyajian yang dikirimkan sebelumnya selesai.

Sintaks

HRESULT EnqueueSetEvent(
  [in] HANDLE hEvent
);

Parameter

[in] hEvent

Handel ke objek peristiwa. Fungsi CreateEvent atau OpenEvent mengembalikan handel ini. Semua jenis objek peristiwa (reset manual, reset otomatis, dan sebagainya) didukung.

Handel harus memiliki hak akses EVENT_MODIFY_STATE. Untuk informasi selengkapnya tentang hak akses, lihat Sinkronisasi Keamanan Objek dan Hak Akses.

Nilai kembali

Mengembalikan S_OK jika berhasil; jika tidak, mengembalikan salah satu nilai berikut:

  • E_OUTOFMEMORY jika memori tidak cukup tersedia untuk menyelesaikan operasi.
  • E_INVALIDARG jika parameter divalidasi dan ditentukan salah.
Pembaruan Platform untuk Windows 7: Pada Windows 7 atau Windows Server 2008 R2 dengan Pembaruan Platform untuk Windows 7 diinstal, EnqueueSetEvent gagal dengan E_NOTIMPL. Untuk informasi selengkapnya tentang Pembaruan Platform untuk Windows 7, lihat Pembaruan Platform untuk Windows 7.

Keterangan

EnqueueSetEvent memanggil fungsi SetEvent pada objek peristiwa setelah semua perintah penyajian yang dikirimkan sebelumnya selesai atau perangkat dihapus.

Setelah aplikasi memanggil EnqueueSetEvent, aplikasi dapat segera memanggil fungsi WaitForSingleObject untuk membuatnya tertidur hingga perintah penyajian selesai.

Anda tidak dapat menggunakan EnqueueSetEvent untuk menentukan penyelesaian pekerjaan yang terkait dengan presentasi (IDXGISwapChain::P resent); sebagai gantinya, kami sarankan Anda menggunakan IDXGISwapChain::GetFrameStatistics.

Contoh

Contoh kode berikut menunjukkan cara menggunakan EnqueueSetEvent.

void BlockingFinish( IDXGIDevice2* pDevice ) 
{
    // Create a manual-reset event object. 
    hEvent = CreateEvent( 
        NULL,               // default security attributes
        TRUE,               // manual-reset event
        FALSE,              // initial state is nonsignaled
        FALSE
        ); 

    if (hEvent == NULL) 
    { 
        printf("CreateEvent failed (%d)\n", GetLastError());
        return;
    }

    pDevice->EnqueueSetEvent(hEvent);    

    DWORD dwWaitResult = WaitForSingleObject( 
        hEvent, // event handle
        INFINITE);    // indefinite wait

    switch (dwWaitResult) 
    {
        // Event object was signaled
        case WAIT_OBJECT_0: 
            // Commands completed
            break; 

        // An error occurred
        default: 
            printf("Wait error (%d)\n", GetLastError()); 
            return 0; 
    }

    CloseHandle(hEvent);
}

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 8 dan Pembaruan Platform untuk Windows 7 [aplikasi desktop | Aplikasi UWP]
Server minimum yang didukung Windows Server 2012 dan Pembaruan Platform untuk Windows Server 2008 R2 [aplikasi desktop | Aplikasi UWP]
Target Platform Windows
Header dxgi1_2.h
Pustaka Dxgi.lib

Lihat juga

IDXGIDevice2