Bagikan melalui


Fungsi EngDeleteDriverObj (winddi.h)

Fungsi EngDeleteDriverObj membebaskan handel yang digunakan untuk melacak sumber daya yang dikelola perangkat.

Sintaks

ENGAPI BOOL EngDeleteDriverObj(
  HDRVOBJ hdo,
  BOOL    bCallBack,
  BOOL    bLocked
);

Parameter

hdo

Tangani ke objek pengandar yang akan dihapus. Handel GDI ini diperoleh dari EngCreateDriverObj.

bCallBack

Menentukan apakah panggilan balik pembersihan harus dipanggil. Jika TRUE, GDI memanggil panggilan balik pembersihan sebelum menghapus DRIVEROBJ dari manajer handel. Jika FALSE, GDI tidak melakukannya. Jika fungsi panggilan balik mengembalikan kegagalan, EngDeleteDriverObj akan gagal.

bLocked

Menentukan apakah objek dikunci oleh driver (melalui panggilan ke EngLockDriverObj) sebelum EngDeleteDriverObj dipanggil. Jika TRUE, objek dikunci; jika FALSE, objek tidak dikunci.

Mengembalikan nilai

Nilai yang dikembalikan adalah TRUE jika fungsi berhasil dan handel dibebaskan; itu FALSE jika handel belum dibebaskan. Jika fungsi driver pFreeObjProc yang ditentukan di EngCreateDriverObj mengembalikan FALSE, maka EngDeleteDriverObj akan gagal dan handel tidak akan dibebaskan. Ini bisa terjadi jika callback pembersihan perlu mengunci struktur DRIVEROBJ lain (untuk membebaskan struktur DRIVEROBJ saat ini ) dan gagal karena struktur DRIVEROBJ lainnya sedang digunakan oleh utas lain.

Keterangan

Setelah handel dibebaskan, sumber daya driver terkait tidak lagi dilacak oleh GDI dan fungsi yang ditunjukkan oleh parameter pFreeObjProc dari EngCreateDriverObj tidak akan dipanggil setelah penghentian proses. Merupakan tanggung jawab driver untuk memastikan bahwa sumber daya dibebaskan.

Sebagian besar driver harus konsisten dalam cara objek dibersihkan pada waktu penghentian. Akibatnya, mereka akan meneruskan TRUE untuk bCallback, menunjukkan kepada GDI bahwa ia harus memanggil fungsi pembersihan driver untuk membebaskan sumber daya driver ini.

Parameter bCallBack menunjukkan kepada GDI apakah fungsi panggilan balik perlu dipanggil. Meneruskan TRUE untuk bCallBack memberi tahu GDI untuk memanggil kembali fungsi pembersihan driver untuk membebaskan sumber daya driver ini. Meneruskan FALSE mencegah GDI memanggil fungsi pembersihan. Jika pFreeObjProc mengembalikan FALSE, EngDeleteDriverObj gagal dan handel tidak akan dibebaskan. Misalnya, ini bisa terjadi jika pFreeObjProc perlu mengunci struktur DRIVEROBJ lain untuk membebaskan struktur DRIVEROBJ saat ini dan gagal karena struktur sedang digunakan oleh utas lain. pFreeObjProc tidak boleh gagal pada waktu pembersihan, karena tidak ada utas, selain utas pembersihan, yang berjalan, sehingga kunci objek lain tidak akan gagal.

Parameter bLocked menunjukkan kepada GDI bahwa objek telah dikunci sekali oleh driver. Seringkali, sebelum objek dihapus, driver mungkin telah menguncinya untuk digunakan terlebih dahulu. Ini memungkinkan driver untuk memanggil GDI tanpa harus membuka objek terlebih dahulu, sehingga menghilangkan kemungkinan bahwa utas lain dapat memasuki driver dan menguncinya sebelum handel dibebaskan.

Persyaratan

   
Klien minimum yang didukung Tersedia di Windows 2000 dan versi yang lebih baru dari sistem operasi Windows.
Target Platform Universal
Header winddi.h (termasuk Winddi.h)
Pustaka Win32k.lib
DLL Win32k.sys

Lihat juga

DRIVEROBJ

EngCreateDriverObj