Bagikan melalui


Fungsi D3DKMTOpenAdapterFromHdc (d3dkmthk.h)

Fungsi D3DKMTOpenAdapterFromHdc memetakan handel konteks perangkat (HDC) ke handel adaptor grafis dan, jika adaptor berisi beberapa output monitor, ke salah satu output tersebut.

Sintaks

NTSTATUS D3DKMTOpenAdapterFromHdc(
  D3DKMT_OPENADAPTERFROMHDC *unnamedParam1
);

Parameter

unnamedParam1

pData [masuk, keluar]

Penunjuk ke struktur D3DKMT_OPENADAPTERFROMHDC yang menjelaskan parameter yang diperlukan untuk melakukan pemetaan.

Nilai kembali

D3DKMTOpenAdapterFromHdc mengembalikan salah satu nilai berikut:

Menampilkan kode Deskripsi
STATUS_SUCCESS Pemetaan berhasil dilakukan.
STATUS_NO_MEMORY Kernel kehabisan sumber daya yang akan memungkinkannya membuka handel lain.
STATUS_INVALID_PARAMETER Parameter divalidasi dan ditentukan salah atau model driver tampilan Windows Vista tidak digunakan.

Fungsi ini mungkin juga mengembalikan nilai NTSTATUS lainnya.

Keterangan

Adaptor grafis sesuai dengan kartu video. Output monitor sesuai dengan kepala pada kartu video. Sistem dengan satu kartu video hanya berisi satu adaptor. Namun, jika kartu video mendukung beberapa kepala, kartu video mendukung output ke beberapa monitor. Gunakan fungsi D3DKMTCloseAdapter untuk menghindari kebocoran sumber daya.

Contoh

Contoh kode berikut menunjukkan bagaimana OpenGL ICD dapat menggunakan D3DKMTOpenAdapterFromHdc untuk mengambil handel adaptor grafis dan output untuk monitor utama dari HDC.

HRESULT GetPrimaryAdapterHandle(HANDLE* phAdapter, UINT* pOutput)
{
    D3DKMT_OPENADAPTERFROMHDC OpenAdapterData;
    DISPLAY_DEVICE dd;
    HDC hdc;
    int i;

    *phAdapter = NULL;
    *pOutput = 0;
    memset(&dd, 0, sizeof (dd));
    dd.cb = sizeof dd;

    for (i = 0; EnumDisplayDevicesA(NULL, i, &dd, 0); ++i) {
        if (dd.StateFlags & DISPLAY_DEVICE_PRIMARY_DEVICE) {
            break;
        }
    }

    hdc = CreateDC (NULL, dd.DeviceName, NULL, NULL);
    if (hdc == NULL) {
        return E_FAIL;
    }

    OpenAdapterData.hDc = hdc;
    if (NT_SUCCESS((*pfnKTOpenAdapterFromHdc)(&OpenAdapterData))) {
        DeleteDC(hdc);
        *phAdapter = OpenAdapterData.hAdapter;
        *pOutput = OpenAdapterData.VidPnSourceId;
        return S_OK;
    }
    DeleteDC(hdc);

    return E_FAIL;
}

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows Vista
Target Platform Universal
Header d3dkmthk.h (termasuk D3dkmthk.h)
Pustaka Gdi32.lib
DLL Gdi32.dll

Lihat juga

D3DKMT_OPENADAPTERFROMHDC