PCANCEL_ADAPTER_CHANNEL fungsi panggilan balik (wdm.h)
Rutinitas CancelAdapterChannel mencoba membatalkan permintaan yang tertunda untuk mengalokasikan saluran DMA.
Sintaks
PCANCEL_ADAPTER_CHANNEL PcancelAdapterChannel;
BOOLEAN PcancelAdapterChannel(
[in] PDMA_ADAPTER DmaAdapter,
[in] PDEVICE_OBJECT DeviceObject,
[in] PVOID DmaTransferContext
)
{...}
Parameter
[in] DmaAdapter
Penunjuk ke struktur DMA_ADAPTER . Struktur ini adalah objek adaptor yang menunggu permintaan alokasi sumber daya yang tertunda diberikan. Penelepon memperoleh pointer ini dari panggilan sebelumnya ke rutinitas IoGetDmaAdapter , dan penelepon meneruskan penunjuk ini ke panggilan AllocateAdapterChannelEx, GetScatterGatherListEx, atau BuildScatterGatherListEx yang meminta alokasi sumber daya.
[in] DeviceObject
Penunjuk ke struktur DEVICE_OBJECT . Struktur ini adalah objek perangkat fisik (PDO) yang mewakili perangkat target untuk operasi DMA tempat saluran DMA diminta.
[in] DmaTransferContext
Penunjuk ke konteks transfer DMA. Nilai parameter ini harus konteks transfer DMA yang sama yang diteruskan ke panggilan AllocateAdapterChannelEx, GetScatterGatherListEx, atau BuildScatterGatherListEx yang meminta alokasi saluran adapter.
Nilai kembali
CancelAdapterChannel mengembalikan TRUE jika permintaan alokasi yang tertunda berhasil dibatalkan. Rutinitas mengembalikan FALSE jika permintaan tidak dapat dibatalkan (misalnya, karena saluran DMA dialokasikan sebelum permintaan dapat dibatalkan).
Keterangan
CancelAdapterChannel 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 rutin ini dengan memanggil IoGetDmaAdapter dengan anggota Versi parameter DeviceDescription diatur ke DEVICE_DESCRIPTION_VERSION3. Jika IoGetDmaAdapter mengembalikan NULL, rutinitas tidak tersedia di platform Anda.
CancelAdapterChannel mencoba membatalkan permintaan alokasi tertunda yang dilakukan oleh panggilan asinkron ke rutinitas alokasi seperti AllocateAdapterChannelEx, GetScatterGatherListEx, atau BuildScatterGatherListEx. Ketika dipanggil secara asinkron, rutinitas alokasi dapat kembali saat permintaan alokasi masih tertunda dan sebelum rutinitas eksekusi yang disediakan driver (AdapterControl atau AdapterListControl) dipanggil. Jika CancelAdapterChannel berhasil membatalkan permintaan alokasi yang tertunda, sumber daya tidak dialokasikan dan rutinitas eksekusi tidak dipanggil.
Jika driver memanggil AllocateAdapterChannelEx untuk meminta sumber daya untuk rutinitas AdapterControl yang disediakan driver, lalu memanggil CancelAdapterChannel untuk membatalkan permintaan, CancelAdapterChannel dapat mengembalikan salah satu nilai berikut:
- TRUE, jika objek adaptor sedang menunggu alokasi yang diminta saat panggilan CancelAdapterChannel terjadi. Dalam hal ini, CancelAdapterChannel membatalkan permintaan alokasi yang tertunda, dan rutinitas AdapterControl driver tidak dipanggil.
- FALSE, jika rutinitas AdapterControl sudah dipanggil atau akan dipanggil.
- TRUE, jika objek adaptor sedang menunggu alokasi yang diminta saat panggilan CancelAdapterChannel terjadi. Dalam hal ini, CancelAdapterChannel membatalkan permintaan alokasi yang tertunda, dan rutinitas AdapterListControl driver tidak dipanggil.
- FALSE, jika rutinitas AdapterListControl sudah dipanggil atau akan dipanggil.
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 |