Bagikan melalui


DXGKDDI_CREATEALLOCATION fungsi panggilan balik (d3dkmddi.h)

Fungsi DxgkDdiCreateAllocation membuat alokasi memori sistem atau video.

Sintaks

DXGKDDI_CREATEALLOCATION DxgkddiCreateallocation;

NTSTATUS DxgkddiCreateallocation(
  [in]     IN_CONST_HANDLE hAdapter,
  [in/out] INOUT_PDXGKARG_CREATEALLOCATION pCreateAllocation
)
{...}

Parameter

[in] hAdapter

Handel ke blok konteks yang terkait dengan adaptor tampilan. Driver miniport tampilan sebelumnya menyediakan handel ini ke subsistem kernel grafis Microsoft DirectX dalam parameter output MiniportDeviceContext dari fungsi DxgkDdiAddDevice .

[in/out] pCreateAllocation

Penunjuk ke struktur DXGKARG_CREATEALLOCATION yang berisi informasi untuk membuat alokasi.

Menampilkan nilai

DxgkDdiCreateAllocation mengembalikan salah satu nilai berikut:

Menampilkan kode Deskripsi
STATUS_SUCCESS DxgkDdiCreateAllocation berhasil membuat alokasi.
STATUS_INVALID_PARAMETER Parameter yang diteruskan ke DxgkDdiCreateAllocation berisi kesalahan yang mencegahnya selesai.
STATUS_NO_MEMORY DxgkDdiCreateAllocation tidak dapat mengalokasikan memori yang diperlukan untuk menyelesaikannya.
STATUS_GRAPHICS_DRIVER_MISMATCH Driver miniport tampilan tidak kompatibel dengan driver tampilan mode pengguna yang memulai panggilan ke DxgkDdiCreateAllocation.

Keterangan

Setelah driver tampilan mode pengguna memanggil fungsi pfnAllocateCb , subsistem kernel grafis DirectX memanggil fungsi DxgkDdiCreateAllocation driver miniport tampilan untuk membuat alokasi. Driver miniport tampilan harus menginterpretasikan data privat (di anggota pPrivateDriverData dari struktur DXGK_ALLOCATIONINFO untuk setiap alokasi) yang diteruskan dari driver tampilan mode pengguna dan harus menentukan daftar parameter yang diperlukan untuk membuat setiap alokasi melalui manajer memori video. Untuk informasi selengkapnya tentang bagaimana driver miniport tampilan memasok parameter ini ke manajer memori video, lihat Menentukan Segmen Saat Membuat Alokasi.

Driver miniport tampilan harus mengembalikan handel alokasi, yang biasanya merupakan penunjuk ke struktur data driver pribadi yang berisi informasi tentang alokasi. Driver miniport tampilan dapat memanggil fungsi DxgkCbGetHandleData kapan saja untuk mengambil data privat untuk handel alokasi. Oleh karena itu, driver miniport tampilan tidak diperlukan untuk mempertahankan tabel handel alokasi privat. Bahkan, kami sangat mencegah tabel handel privat karena dapat menjadi basi atau tidak sinkron dengan subsistem kernel grafis DirectX dalam skenario display-mode-switch seperti sakelar pengguna cepat, cabut panas, dan sebagainya.

Driver tampilan mode pengguna menetapkan alokasi ke sumber daya atau perangkat. Untuk menentukan apakah alokasi milik sumber daya, driver miniport tampilan dapat memeriksa apakah bendera bit-field Sumber Daya diatur dalam anggota Bendera dari struktur DXGKARG_CREATEALLOCATION yang ditunjukkan oleh parameter pCreateAllocation dari DxgkDdiCreateAllocation . Jika alokasi milik sumber daya, driver miniport tampilan dapat (tetapi tidak diperlukan untuk) mengembalikan handel sumber daya, yang biasanya merupakan penunjuk ke struktur data driver privat yang menjelaskan sumber daya. Jika subsistem kernel grafis DirectX memanggil DxgkDdiCreateAllocation untuk membuat alokasi tambahan untuk sumber daya yang ada, anggota hResource DXGKARG_CREATEALLOCATION berisi handel yang dikembalikan oleh panggilan DxgkDdiCreateAllocation sebelumnya untuk sumber daya tersebut. Jika perlu, driver miniport tampilan dapat mengubah handel sumber daya selama panggilan ke DxgkDdiCreateAllocation.

Jika driver tampilan mode pengguna menempatkan handel sumber daya dalam buffer perintah, driver miniport tampilan dapat mengambil data pribadi dengan memanggil DxgkCbGetHandleData. Driver miniport tampilan juga dapat menghitung semua alokasi anak sumber daya dengan memanggil fungsi DxgkCbEnumHandleChildren .

Dimulai dengan Windows 7, jika driver miniport tampilan memproses panggilan ke fungsi DxgkDdiCreateAllocation untuk membuat alokasi untuk akselerasi perangkat keras GDI, driver harus mengatur ukuran alokasi (termasuk nilai pitch untuk alokasi yang terlihat CPU), pCreateAllocation-pAllocationInfo-Size>.>

Sumber daya yang dibuat dalam panggilan DxgkDdiCreateAllocation milik adaptor dan bukan ke perangkat. Driver miniport tampilan tidak boleh mereferensikan data perangkat di mana pun dalam alokasi privat dan struktur data sumber daya. Karena berbagi permukaan, sumber daya mungkin digunakan setelah penghancuran perangkat tempat driver tampilan mode pengguna membuat sumber daya.

DxgkDdiCreateAllocation harus dibuat dapat dipaginasi.

Mengalokasikan buffer riwayat

Mulai dari Windows 8.1, ketika DxgkDdiCreateAllocation dipanggil, driver miniport tampilan dapat mengatur DXGK_ALLOCATIONINFOFLAGS.Anggota HistoryBuffer untuk menunjukkan bahwa driver mode pengguna dapat mengelola pembuatan dan penghancuran buffer riwayat.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows Vista
Target Platform Desktop
Header d3dkmddi.h
IRQL PASSIVE_LEVEL

Lihat juga

DXGKARG_CREATEALLOCATION

DXGK_ALLOCATIONINFO

DXGK_ALLOCATIONINFOFLAGS

DxgkCbEnumHandleChildren

DxgkCbGetHandleData

DxgkDdiAddDevice

pfnAllocateCb