DXGKDDI_NOTIFY_SURPRISE_REMOVAL fungsi panggilan balik (dispmprt.h)

DXGKDDI_NOTIFY_SURPRISE_REMOVAL dipanggil oleh sistem operasi ketika pengguna memutuskan sambungan perangkat tampilan eksternal tanpa memberi tahu sistem.

Sintaks

DXGKDDI_NOTIFY_SURPRISE_REMOVAL DxgkddiNotifySurpriseRemoval;

NTSTATUS DxgkddiNotifySurpriseRemoval(
  [in] PVOID MiniportDeviceContext,
  [in] DXGK_SURPRISE_REMOVAL_TYPE RemovalType
)
{...}

Parameter

[in] MiniportDeviceContext

Handel ke blok konteks yang terkait dengan adaptor tampilan. Fungsi DxgkDdiAddDevice driver miniport tampilan sebelumnya menyediakan handel ini ke subsistem kernel grafis DirectX.

[in] RemovalType

Nilai jenis DXGK_SURPRISE_REMOVAL_TYPE yang mengidentifikasi jenis peristiwa penghapusan mendadak.

Nilai kembali

Mengembalikan STATUS_SUCCESS jika sumber daya perangkat lunak dibersihkan untuk RemovalType = DxgkRemovalHibernation. Jika driver mengembalikan kode kesalahan, sistem operasi akan mencoba me-reboot sistem, seperti yang dijelaskan di bagian Keterangan berikut.

Keterangan

Panggilan balik ini dapat diimplementasikan secara opsional oleh Windows Display Driver Model (WDDM) 1.2 dan driver miniport tampilan yang lebih baru.

Catatan

Sistem operasi memanggil DxgkDdiNotifySurpriseRemoval hanya jika driver miniport tampilan menunjukkan dukungan dengan mengatur anggota SupportSurpriseRemovalInHibernation dari struktur DXGK_DRIVERCAPS ke 1.

Ketika OS mendeteksi penghapusan mendadak, OS memberi tahu driver secepat mungkin. DxgkDdiNotifySurpriseRemoval adalah fungsi DDI nol tingkat , yang berarti bahwa itu dapat dipanggil ketika driver telah menunggu beban kerja GPU dan/atau berjalan di dalam fungsi DDI lainnya. Karena panggilan ke fungsi ini menunjukkan perangkat keras grafis telah dihapus secara fisik atau telah hilang dari sistem, upaya lebih lanjut untuk mengakses perangkat keras dapat menyebabkan masalah seperti hard hang.

OS mengategorikan penghapusan kejutan sebagai berikut:

  • Penghapusan kejutan terjadi ketika sistem dan perangkat grafis dalam keadaan daya rendah, seperti tidur atau hibernasi. Ketika OS dilanjutkan dari status daya rendah, OS mendeteksi penghapusan mendadak ini dan segera memanggil panggilan balik DxgkDdiNotifySurpriseRemoval driver dengan RemovalType = DxgkRemovalHibernation. Kemungkinan tidak akan ada pekerjaan GPU yang tertunda atau panggilan DDI dalam hal ini, sehingga harus relatif aman dan mudah ditangani oleh driver. Detail status pengembalian adalah sebagai berikut:

    • OS mengharapkan driver menangani panggilan DxgkDdiNotifySurpriseRemoval dengan benar dan mengembalikan STATUS_SUCCESS.
    • Jika perangkat grafis yang dihapus adalah perangkat uji mandiri daya (POST), OS akan mencoba me-reboot sistem dengan baik terlepas dari status yang dikembalikan.
    • Untuk perangkat non-POST, jika driver gagal dalam panggilan dan hanya mendukung SupportSurpriseRemovalInHibernation dalam DXGK_DRIVERCAPS- nya, OS akan me-reboot sistem dengan baik. Jika mendukung SupportSurpriseRemoval di DXGK_DRIVERCAPS, OS akan mengabaikan status pengembalian dan terus menghentikan perangkat grafis. Lihat catatan pengembalian tambahan di bawah ini.
  • Perangkat grafis terkejut dihapus/dilepas saat masih berjalan. Ketika OS mendeteksi jenis penghapusan kejutan ini, OS segera memanggil callback DxgkDdiNotifySurpriseRemoval driver dengan RemovalType = DxgkRemovalPnPNotify. Mungkin masih ada beberapa pekerjaan GPU yang tertunda atau panggilan DDI untuk diselesaikan dalam kasus ini. Ketika driver menerima pemberitahuan ini dan dapat menangani penghapusan mendadak ini, driver harus segera menandai perangkat ini sebagai penghapusan mendadak dalam konteks perangkatnya sendiri untuk menghindari akses perangkat keras dan kemudian mengembalikan STATUS_SUCCESS kembali ke OS. OS akan terus memanggil fungsi DDI lainnya untuk membersihkan sumber daya dan menghentikan perangkat grafis. Seperti disebutkan di bawah ini, driver hanya boleh merilis atau membersihkan sumber daya perangkat lunak dan tidak boleh menyentuh atau mengakses perangkat keras apa pun dalam panggilan DDI ini. Jika driver tidak dapat menangani penghapusan mendadak ini, driver harus mengembalikan kegagalan yang tepat ke OS. Untuk kegagalan apa pun, OS akan segera menyadap sistem untuk menghindari kerusakan perangkat keras atau data lebih lanjut.

Jika driver miniport tampilan kembali STATUS_SUCCESS, subsistem kernel grafis DirectX akan terus menghapus adaptor tampilan eksternal dari tumpukan grafik dan akan memanggil fungsi mode kernel DxgkDdiXxx yang diimplementasikan driver lainnya untuk melepaskan semua sumber daya. Dalam hal ini, driver harus menyelesaikan pembersihan sumber daya perangkat lunak sebagai respons terhadap panggilan dari sistem operasi tetapi tidak boleh menyentuh atau membersihkan pengaturan perangkat keras apa pun. Jika tidak ada perangkat keras lain yang menggunakan driver, sistem operasi akan membongkar driver.

Jika driver mengembalikan kode kesalahan, tidak mengatur DXGK_DRIVERCAPS. SupportSurpriseRemovalInHibernation, atau tidak mengimplementasikan fungsi ini, subsistem kernel grafis DirectX tidak akan memanggil fungsi DxgkDdiXxx yang diimplementasikan driver lagi dan akan mencoba me-reboot sistem. Dalam hal ini, sumber daya yang dialokasikan sebelum perangkat tampilan eksternal terputus tidak akan dirilis.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 8
Server minimum yang didukung Windows Server 2012
Target Platform Desktop
Header dispmprt.h
IRQL PASSIVE_LEVEL

Lihat juga

D3DKMT_WDDM_1_2_CAPS

DXGK_DRIVERCAPS

DXGK_SURPRISE_REMOVAL_TYPE

DxgkDdiAddDevice