struktur DD_GETDRIVERINFO2DATA (d3dhal.h)
DirectX 8.0 dan versi yang lebih baru saja.
DD_GETDRIVERINFO2DATA diteruskan di anggota lpvData dari struktur DD_GETDRIVERINFODATA saat GUID_GetDriverInfo2 ditentukan dalam anggota DD_GETDRIVERINFODATA guidInfo dalam panggilan DdGetDriverInfo .
Sintaks
typedef struct _DD_GETDRIVERINFO2DATA {
DWORD dwReserved;
DWORD dwMagic;
DWORD dwType;
DWORD dwExpectedSize;
} DD_GETDRIVERINFO2DATA;
Anggota
dwReserved
Menentukan bidang yang dipesan. Driver tidak boleh membaca atau menulis.
dwMagic
Menentukan angka ajaib. Memiliki nilai D3DGDI2_MAGIC jika ini adalah panggilan GetDriverInfo2 . Jika tidak, struktur ini, pada kenyataannya, panggilan DD_STEREOMODE .
dwType
Menentukan jenis informasi yang diminta, yang dapat berisi salah satu nilai D3DGDI2_TYPE_Xxx berikut. Driver seharusnya hanya membaca (tidak menulis) anggota ini.
Nilai | Makna |
---|---|
D3DGDI2_TYPE_DEFER_AGP_FREES | Hanya sistem operasi berbasis NT. Digunakan untuk memberi tahu driver bahwa driver harus menangani penghancuran memori AGP dengan benar untuk permukaan. Runtime menyediakan penunjuk ke struktur DD_FREE_DEFERRED_AGP_DATA di bidang lpvData dari struktur data DD_GETDRIVERINFODATA. Driver terkadang menerima pemberitahuan ini sebelum perubahan mode tampilan terjadi. Runtime hanya mengirim pemberitahuan ini jika digunakan untuk melakukan perubahan mode tampilan. Driver harus memeriksa pengidentifikasi proses (PID) dari proses yang menghancurkan permukaan terhadap proses yang menciptakan permukaan. Jika PID berbeda, driver mungkin tidak boleh menghancurkan pemetaan mode pengguna memori AGP karena aplikasi mungkin masih menggunakan memori. |
D3DGDI2_TYPE_DEFERRED_AGP_AWARE | Hanya sistem operasi berbasis NT. Digunakan untuk memberi tahu driver bahwa runtime mengirim D3DGDI2_TYPE_FREE_DEFERRED_AGP dan D3DGDI2_TYPE_DEFER_AGP_FREES pemberitahuan pada waktu yang tepat (seperti, setelah kunci memori AGP terakhir yang beredar dirilis). Runtime menyediakan penunjuk ke struktur DD_DEFERRED_AGP_AWARE_DATA di bidang lpvData dari struktur data DD_GETDRIVERINFODATA. |
D3DGDI2_TYPE_DXVERSION | Digunakan untuk memberi tahu driver tentang versi runtime DX saat ini yang digunakan oleh aplikasi. Runtime menyediakan penunjuk ke struktur DD_DXVERSION di bidang lpvData dari struktur data DD_GETDRIVERINFODATA. |
D3DGDI2_TYPE_FREE_DEFERRED_AGP | Hanya sistem operasi berbasis NT. Digunakan untuk memberi tahu driver bahwa sekarang aman untuk menghancurkan semua pemetaan mode pengguna dari memori AGP . Driver mempertahankan pemetaan mode pengguna ini ketika permukaan dihancurkan dan menerima pemberitahuan D3DGDI2_TYPE_DEFER_AGP_FREES. Runtime menyediakan penunjuk ke struktur DD_FREE_DEFERRED_AGP_DATA di bidang lpvData dari struktur data DD_GETDRIVERINFODATA. Driver menerima pemberitahuan ini ketika semua perangkat tampilan dalam proses berhenti menggunakan permukaan, tekstur, buffer vertex, dan buffer indeks yang dikunci pada saat mode tampilan berubah. |
D3DGDI2_TYPE_GETADAPTERGROUP | DirectX 9.0 dan versi yang lebih baru saja. Digunakan untuk mengkueri driver untuk identitas grup adaptor yang merupakan bagian dari kartu video multi-kepalanya. Grup ini berbagi perangkat keras video seperti memori video dan akselerator 3D. Driver harus mengatur struktur data yang diacu oleh bidang lpvData dari struktur data DD_GETDRIVERINFODATA ke DD_GETADAPTERGROUPDATA. |
D3DGDI2_TYPE_GETD3DCAPS8 | Jenis ini menunjukkan bahwa permintaan runtime untuk menerima struktur D3DCAPS8 memberikan kemampuan gaya DirectX 8.0 perangkat. Driver harus menyalin struktur D3DCAPS8 yang diinisialisasi ke bidang lpvData dari struktur DD_GETDRIVERINFODATA. |
D3DGDI2_TYPE_GETD3DCAPS9 | Diperlukan hanya untuk DirectX 9.0 dan versi yang lebih baru. Jenis ini menunjukkan bahwa permintaan runtime untuk menerima struktur D3DCAPS9 memberikan kemampuan gaya DirectX 9.0 perangkat. Driver harus menyalin struktur D3DCAPS9 yang diinisialisasi ke bidang lpvData dari struktur DD_GETDRIVERINFODATA. |
D3DGDI2_TYPE_GETD3DQUERY | DirectX 9.0 dan versi yang lebih baru saja. Digunakan untuk mengkueri driver untuk informasi tentang jenis kueri tertentu yang didukungnya. Driver harus mengatur struktur data yang ditunjukkan oleh bidanglpvData dari struktur data DD_GETDRIVERINFODATA ke DD_GETD3DQUERYDATA. |
D3DGDI2_TYPE_GETD3DQUERYCOUNT | DirectX 9.0 dan versi yang lebih baru saja. Digunakan untuk mengkueri driver untuk jumlah jenis kueri yang didukungnya. Driver harus mengatur struktur data yang diacu oleh bidang lpvData dari struktur data DD_GETDRIVERINFODATA ke DD_GETD3DQUERYCOUNTDATA. |
D3DGDI2_TYPE_GETDDIVERSION | DirectX 9.0 dan versi yang lebih baru saja. Digunakan untuk mengkueri driver untuk versi DDI yang didukung driver; versi DDI ini, pada gilirannya, tergantung pada versi DirectX yang membuat permintaan ini. Driver harus mengatur anggota dwDDIVersion dari struktur DD_GETDDIVERSIONDATA , yang ditujukan bidang lpvData dari struktur data DD_GETDRIVERINFODATA, ke versi DDI yang sesuai. |
D3DGDI2_TYPE_GETEXTENDEDMODE | DirectX 9.0 dan versi yang lebih baru saja. Digunakan untuk mengkueri driver untuk informasi tentang mode tampilan diperluas tertentu yang didukungnya. Driver harus mengatur struktur data yang diacu oleh bidang lpvData dari struktur data DD_GETDRIVERINFODATA ke DD_GETEXTENDEDMODEDATA. |
D3DGDI2_TYPE_GETEXTENDEDMODECOUNT | DirectX 9.0 dan versi yang lebih baru saja. Digunakan untuk mengkueri driver untuk jumlah mode tampilan yang diperluas yang didukungnya. Driver harus mengatur struktur data yang diacu oleh bidang lpvData dari struktur data DD_GETDRIVERINFODATA ke DD_GETEXTENDEDMODECOUNTDATA. |
D3DGDI2_TYPE_GETFORMAT | Digunakan untuk mengkueri format permukaan tertentu dari driver. Struktur data yang ditunjukkan oleh lpvDatafield dari struktur data DD_GETDRIVERINFODATA DD_GETFORMATDATA . |
D3DGDI2_TYPE_GETFORMATCOUNT | Digunakan untuk meminta jumlah format permukaan gaya DirectX 8.0 dan yang lebih baru yang didukung oleh driver. Struktur data yang ditujukkan oleh bidang thelpvData dari DD_GETDRIVERINFODATA DD_GETFORMATCOUNTDATA. |
D3DGDI2_TYPE_GETMULTISAMPLEQUALITYLEVELS | DirectX 9.0 dan versi yang lebih baru saja. Digunakan untuk mengkueri driver untuk jumlah tingkat kualitas beberapa sampel untuk format target render tertentu yang didukungnya. Apakah perangkat tampilan mendukung multisampling yang dapat ditutupi atau dapat di-submask, driver untuk perangkat harus memberikan jumlah tingkat kualitas untuk jenis D3DMULTISAMPLE_NONMASKABLE beberapa sampel. Driver harus mengatur struktur data yang diacu oleh bidang lpvData dari struktur data DD_GETDRIVERINFODATA ke DD_MULTISAMPLEQUALITYLEVELSDATA. |
dwExpectedSize
Menentukan ukuran yang diharapkan, dalam byte, dari informasi yang diminta. Driver seharusnya hanya membaca (tidak menulis) anggota ini.
Keterangan
Anggota dwExpectedSize dari struktur DD_GETDRIVERINFODATA tidak digunakan saat permintaan GetDriverInfo2 sedang dibuat. Nilainya tidak ditentukan dalam kasus ini dan harus diabaikan. Sebagai gantinya, ukuran data yang diharapkan aktual ditemukan di anggota dwExpectedSize dari DD_GETDRIVERINFO2DATA.
Fragmen kode berikut menunjukkan cara menangani GetDriverInfo2:
D3DCAPS8 myD3DCaps8 = { ... };
DWORD CALLBACK
DdGetDriverInfo(LPDDHAL_GETDRIVERINFODATA lpData)
{
if (MATCH_GUID((lpData->guidInfo), GUID_GetDriverInfo2))
{
ASSERT(NULL != lpData);
ASSERT(NULL != lpData->lpvData);
// Is this a call to GetDriverInfo2 or DDStereoMode?
if (((DD_GETDRIVERINFO2DATA*)(lpData->lpvData))->dwMagic
== D3DGDI2_MAGIC)
{
// Yes, it's a call to GetDriverInfo2, fetch the
// DD_GETDRIVERINFO2DATA data structure.
DD_GETDRIVERINFO2DATA* pgdi2 = lpData->lpvData;
ASSERT(NULL != pgdi2);
// What type of request is this?
switch (pgdi2->dwType)
{
case D3DGDI2_TYPE_GETD3DCAPS8:
{
// The runtime is requesting the DX8 D3D caps
// so copy them over now. It should be noted
// that the dwExpectedSize field of
// DD_GETDRIVERINFODATA is not used for
// GetDriverInfo2 calls and should be ignored.
size_t copySize = min(
sizeof(myD3DCaps8), pgdi2->dwExpectedSize);
memcpy(lpData->lpvData, &myD3DCaps8, copySize);
lpData->dwActualSize = copySize;
lpData->ddRVal = DD_OK;
return DDHAL_DRIVER_HANDLED;
}
default:
// For any other GetDriverInfo2 types not handled
// or understood by the driver set a ddRVal of
// DDERR_CURRENTLYNOTAVAIL and return
// DDHAL_DRIVER_HANDLED.
return DDHAL_DRIVER_HANDLED;
}
}
else
{
// It must be a call to request for stereo mode support.
// Fetch the stereo mode data
DD_STEREOMODE* pStereoMode = lpData->lpvData;
ASSERT(NULL != pStereoMode);
// Process the stereo mode request...
lpData->dwActualSize = sizeof(DD_STEREOMODE);
lpData->ddRVal = DD_OK;
return DDHAL_DRIVER_HANDLED;
}
}
// Handle any other device GUIDs...
} // DdGetDriverInfo
Untuk informasi selengkapnya tentang D3DCAPS8 dan D3DCAPS9, lihat dokumentasi DirectX SDK.
Persyaratan
Persyaratan | Nilai |
---|---|
Header | d3dhal.h (termasuk D3dhal.h) |