PFREE_ADAPTER_OBJECT fungsi panggilan balik (wdm.h)
Rutinitas FreeAdapterObject merilis objek adaptor yang ditentukan setelah driver menyelesaikan semua operasi DMA.
Sintaks
PFREE_ADAPTER_OBJECT PfreeAdapterObject;
void PfreeAdapterObject(
[in] PDMA_ADAPTER DmaAdapter,
[in] IO_ALLOCATION_ACTION AllocationAction
)
{...}
Parameter
[in] DmaAdapter
Penunjuk ke struktur DMA_ADAPTER . Struktur ini adalah objek adaptor yang akan dilepaskan. Objek ini mewakili perangkat DMA master bus driver atau saluran DMA sistem. Penelepon memperoleh pointer ini dari panggilan sebelumnya ke rutinitas IoGetDmaAdapter .
[in] AllocationAction
Jenis dealokasi yang diminta driver panggilan. Atur parameter ini ke nilai enumerasi IO_ALLOCATION_ACTION . Untuk informasi lebih lanjut, lihat bagian Keterangan.
Nilai kembali
Tidak ada
Keterangan
FreeAdapterObject bukanlah rutinitas sistem yang dapat dipanggil langsung berdasarkan nama. Rutinitas ini hanya dapat dipanggil dengan penunjuk dari alamat yang dikembalikan dalam struktur DMA_OPERATIONS . Driver mendapatkan alamat rutinitas ini dengan memanggil IoGetDmaAdapter dengan anggota Versi parameter DeviceDescription diatur ke DEVICE_DESCRIPTION_VERSION3. Jika IoGetDmaAdapter mengembalikan NULL, rutinitas tidak tersedia di platform Anda.
Jika AllocationAction = DeallocateObject, panggilan FreeAdapterObject merilis objek adaptor, dan merilis register peta apa pun yang mungkin dialokasikan untuk objek ini.
Jika AllocationAction = DeallocateObjectKeepRegisters, panggilan FreeAdapterObject merilis objek adapter, tetapi tidak merilis register peta apa pun. Dalam hal ini, driver harus secara eksplisit merilis register peta yang dialokasikan dengan memanggil rutinitas FreeMapRegisters .
Jika AllocationAction = KeepObject, panggilan FreeAdapterObject tidak berpengaruh.
FreeAdapterObject dapat digunakan untuk membatalkan alokasi sumber daya DMA yang dialokasikan oleh panggilan ke rutinitas AllocateAdapterChannelEx, GetScatterGatherListEx, dan BuildScatterGatherListEx . Jika driver memanggil salah satu rutinitas ini secara sinkron, parameter ExecutionRoutine bersifat opsional dan dapat dihilangkan. Dalam hal ini, driver dapat menggunakan objek adaptor dan register peta yang dialokasikan oleh panggilan. Setelah driver memulai transfer DMA, driver dapat memanggil FreeAdapterObject untuk membatalkan alokasi objek adaptor dan, jika perlu, peta mendaftar.
Rutinitas FreeAdapterChannel mirip dengan FreeAdapterObject. FreeAdapterChannel selalu merilis objek adaptor dan daftar peta yang dialokasikan. Perilaku ini mirip dengan FreeAdapterObject jika AllocationAction = DeallocateObject.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Tersedia dimulai dengan Windows 8. |
Target Platform | Desktop |
Header | wdm.h (termasuk Wdm.h, Ntddk.h, Ntifs.h) |
IRQL | <= DISPATCH_LEVEL |