struktur DMA_OPERATIONS (wdm.h)
Struktur DMA_OPERATIONS menyediakan tabel pointer ke fungsi yang mengontrol pengoperasian pengontrol DMA.
Sintaks
typedef struct _DMA_OPERATIONS {
ULONG Size;
PPUT_DMA_ADAPTER PutDmaAdapter;
PALLOCATE_COMMON_BUFFER AllocateCommonBuffer;
PFREE_COMMON_BUFFER FreeCommonBuffer;
PALLOCATE_ADAPTER_CHANNEL AllocateAdapterChannel;
PFLUSH_ADAPTER_BUFFERS FlushAdapterBuffers;
PFREE_ADAPTER_CHANNEL FreeAdapterChannel;
PFREE_MAP_REGISTERS FreeMapRegisters;
PMAP_TRANSFER MapTransfer;
PGET_DMA_ALIGNMENT GetDmaAlignment;
PREAD_DMA_COUNTER ReadDmaCounter;
PGET_SCATTER_GATHER_LIST GetScatterGatherList;
PPUT_SCATTER_GATHER_LIST PutScatterGatherList;
PCALCULATE_SCATTER_GATHER_LIST_SIZE CalculateScatterGatherList;
PBUILD_SCATTER_GATHER_LIST BuildScatterGatherList;
PBUILD_MDL_FROM_SCATTER_GATHER_LIST BuildMdlFromScatterGatherList;
PGET_DMA_ADAPTER_INFO GetDmaAdapterInfo;
PGET_DMA_TRANSFER_INFO GetDmaTransferInfo;
PINITIALIZE_DMA_TRANSFER_CONTEXT InitializeDmaTransferContext;
PALLOCATE_COMMON_BUFFER_EX AllocateCommonBufferEx;
PALLOCATE_ADAPTER_CHANNEL_EX AllocateAdapterChannelEx;
PCONFIGURE_ADAPTER_CHANNEL ConfigureAdapterChannel;
PCANCEL_ADAPTER_CHANNEL CancelAdapterChannel;
PMAP_TRANSFER_EX MapTransferEx;
PGET_SCATTER_GATHER_LIST_EX GetScatterGatherListEx;
PBUILD_SCATTER_GATHER_LIST_EX BuildScatterGatherListEx;
PFLUSH_ADAPTER_BUFFERS_EX FlushAdapterBuffersEx;
PFREE_ADAPTER_OBJECT FreeAdapterObject;
PCANCEL_MAPPED_TRANSFER CancelMappedTransfer;
PALLOCATE_DOMAIN_COMMON_BUFFER AllocateDomainCommonBuffer;
PFLUSH_DMA_BUFFER FlushDmaBuffer;
PJOIN_DMA_DOMAIN JoinDmaDomain;
PLEAVE_DMA_DOMAIN LeaveDmaDomain;
PGET_DMA_DOMAIN GetDmaDomain;
PALLOCATE_COMMON_BUFFER_WITH_BOUNDS AllocateCommonBufferWithBounds;
PALLOCATE_COMMON_BUFFER_VECTOR AllocateCommonBufferVector;
PGET_COMMON_BUFFER_FROM_VECTOR_BY_INDEX GetCommonBufferFromVectorByIndex;
PFREE_COMMON_BUFFER_FROM_VECTOR FreeCommonBufferFromVector;
PFREE_COMMON_BUFFER_VECTOR FreeCommonBufferVector;
PCREATE_COMMON_BUFFER_FROM_MDL CreateCommonBufferFromMdl;
} *PDMA_OPERATIONS, DMA_OPERATIONS;
Anggota
Size
Ukuran, dalam byte, dari struktur DMA_OPERATIONS ini.
PutDmaAdapter
Penunjuk ke rutinitas yang ditentukan sistem untuk membebaskan struktur DMA_ADAPTER . Untuk informasi selengkapnya, lihat PutDmaAdapter.
AllocateCommonBuffer
Pointer ke rutinitas yang ditentukan sistem untuk mengalokasikan buffer DMA yang berdekatan secara fisik. Untuk informasi selengkapnya, lihat AllocateCommonBuffer.
FreeCommonBuffer
Penunjuk ke rutinitas yang ditentukan sistem untuk membebaskan buffer DMA yang berdekatan secara fisik yang sebelumnya dialokasikan oleh AllocateCommonBuffer. Untuk informasi selengkapnya, lihat FreeCommonBuffer.
AllocateAdapterChannel
Penunjuk ke rutinitas yang ditentukan sistem untuk mengalokasikan saluran untuk operasi DMA. Untuk informasi selengkapnya, lihat AllocateAdapterChannel.
FlushAdapterBuffers
Penunjuk ke rutinitas yang ditentukan sistem untuk membersihkan data dari cache internal sistem atau adaptor master bus setelah operasi DMA. Untuk informasi selengkapnya, lihat FlushAdapterBuffers.
FreeAdapterChannel
Penunjuk ke rutinitas yang ditentukan sistem untuk membebaskan saluran yang sebelumnya dialokasikan untuk operasi DMA oleh AllocateAdapterChannel. Untuk informasi selengkapnya, lihat FreeAdapterChannel.
FreeMapRegisters
Pointer ke rutinitas yang ditentukan sistem untuk membebaskan register peta yang dialokasikan untuk operasi DMA. Untuk informasi selengkapnya, lihat FreeMapRegisters.
MapTransfer
Penunjuk ke rutinitas yang ditentukan sistem untuk memulai operasi DMA. Untuk informasi selengkapnya, lihat MapTransfer.
GetDmaAlignment
Penunjuk ke rutinitas yang ditentukan sistem untuk mendapatkan persyaratan penyelarasan DMA pengontrol. Untuk informasi selengkapnya, lihat GetDmaAlignment.
ReadDmaCounter
Pointer ke rutinitas yang ditentukan sistem untuk mendapatkan jumlah transfer saat ini untuk operasi DMA. Untuk informasi selengkapnya, lihat ReadDmaCounter.
GetScatterGatherList
Penunjuk ke rutinitas yang ditentukan sistem yang mengalokasikan daftar peta dan membuat daftar sebar/kumpulkan untuk DMA. Untuk informasi selengkapnya, lihat GetScatterGatherList.
PutScatterGatherList
Penunjuk ke rutinitas yang ditentukan sistem yang membebaskan daftar peta dan daftar sebar/kumpulkan setelah operasi DMA selesai. Untuk informasi selengkapnya, lihat PutScatterGatherList.
CalculateScatterGatherList
Penunjuk ke rutinitas yang ditentukan sistem yang menentukan ukuran buffer yang diperlukan untuk menyimpan daftar sebar/kumpulkan yang menjelaskan buffer data I/O. Anggota ini hanya tersedia di versi 2 dan yang lebih baru dari DMA_OPERATIONS. Untuk informasi selengkapnya, lihat CalculateScatterGatherList.
BuildScatterGatherList
Penunjuk ke rutinitas yang ditentukan sistem yang mengalokasikan daftar peta dan membuat daftar sebar/kumpulkan untuk DMA dalam buffer yang disediakan driver. Anggota ini hanya tersedia di versi 2 dan yang lebih baru dari DMA_OPERATIONS. Untuk informasi selengkapnya, lihat BuildScatterGatherList.
BuildMdlFromScatterGatherList
Penunjuk ke rutinitas yang ditentukan sistem yang membangun MDL yang sesuai dengan daftar sebar/kumpulkan. Anggota ini hanya tersedia di versi 2 dan yang lebih baru dari DMA_OPERATIONS. Untuk informasi selengkapnya, lihat BuildMdlFromScatterGatherList.
GetDmaAdapterInfo
Penunjuk ke rutinitas yang ditentukan sistem yang menjelaskan kemampuan perangkat DMA master bus atau pengontrol DMA sistem. GetDmaAdapterInfo hanya tersedia di versi 3 DMA_OPERATIONS. Untuk informasi selengkapnya, lihat GetDmaAdapterInfo.
GetDmaTransferInfo
Penunjuk ke rutinitas yang ditentukan sistem yang menjelaskan persyaratan alokasi untuk daftar sebar/kumpulkan. Rutinitas ini menggantikan CalculateScatterGatherList. GetDmaTransferInfo hanya tersedia di versi 3 DMA_OPERATIONS. Untuk informasi selengkapnya, lihat GetDmaTransferInfo.
InitializeDmaTransferContext
Penunjuk ke rutinitas yang ditentukan sistem yang menginisialisasi konteks transfer DMA buram. Sistem operasi menyimpan status internal transfer DMA dalam konteks ini. InitializeDmaTransferContext hanya tersedia di versi 3 DMA_OPERATIONS. Untuk informasi selengkapnya, lihat InitializeDmaTransferContext.
AllocateCommonBufferEx
Pointer ke rutinitas yang ditentukan sistem yang mengalokasikan memori untuk buffer umum dan memetakan memori ini sehingga dapat diakses baik oleh prosesor maupun oleh perangkat DMA. AllocateCommonBufferEx hanya tersedia di versi 3 DMA_OPERATIONS. Untuk informasi selengkapnya, lihat AllocateCommonBufferEx.
AllocateAdapterChannelEx
Penunjuk ke rutinitas yang ditentukan sistem yang mengalokasikan sumber daya yang diperlukan untuk transfer DMA dan kemudian memanggil rutinitas AdapterControl yang disediakan driver untuk memulai transfer DMA. AllocateAdapterChannelEx hanya tersedia di versi 3 DMA_OPERATIONS. Untuk informasi selengkapnya, lihat AllocateAdapterChannelEx.
ConfigureAdapterChannel
Penunjuk ke rutinitas yang ditentukan sistem memungkinkan fungsi kustom yang diimplementasikan oleh pengontrol DMA. ConfigureAdapterChannel hanya tersedia di versi 3 dari DMA_OPERATIONS. Untuk informasi selengkapnya, lihat ConfigureAdapterChannel.
CancelAdapterChannel
Penunjuk ke rutinitas yang ditentukan sistem yang mencoba membatalkan permintaan yang tertunda untuk mengalokasikan saluran DMA. CancelAdapterChannel hanya tersedia di versi 3 dari DMA_OPERATIONS. Untuk informasi selengkapnya, lihat CancelAdapterChannel.
MapTransferEx
Penunjuk ke rutinitas yang ditentukan sistem yang menyiapkan daftar peta untuk memetakan alamat fisik dalam daftar sebar/kumpulkan ke alamat logis yang diperlukan untuk melakukan transfer DMA. MapTransferEx hanya tersedia di versi 3 DMA_OPERATIONS. Untuk informasi selengkapnya, lihat MapTransferEx.
GetScatterGatherListEx
Penunjuk ke rutinitas yang ditentukan sistem yang mengalokasikan sumber daya yang diperlukan untuk transfer DMA, membangun daftar sebar/kumpulkan, lalu memanggil rutinitas AdapterListControl yang disediakan driver untuk memulai transfer DMA. GetScatterGatherListEx hanya tersedia di versi 3 DMA_OPERATIONS. Untuk informasi selengkapnya, lihat GetScatterGatherListEx. Rutinitas ini adalah pembungkus AllocateAdapterChannelEx dan MapTransferEx.
BuildScatterGatherListEx
Penunjuk ke rutinitas yang ditentukan sistem yang membangun daftar sebar/kumpulkan dalam buffer yang dialokasikan pemanggil, lalu memanggil rutinitas AdapterListControl yang disediakan driver untuk memulai transfer DMA. BuildScatterGatherListEx hanya tersedia di versi 3 dari DMA_OPERATIONS. Untuk informasi selengkapnya, lihat BuildScatterGatherListEx.
FlushAdapterBuffersEx
Penunjuk ke rutinitas yang ditentukan sistem yang membersihkan data apa pun yang tetap berada di cache internal pengontrol DMA sistem atau di cache internal adaptor master bus di akhir transfer DMA. Untuk perangkat yang menggunakan pengontrol DMA sistem, rutinitas ini membatalkan transfer DMA saat ini pada pengontrol jika transfer tidak selesai. FlushAdapterBuffersEx hanya tersedia di versi 3 dari DMA_OPERATIONS. Untuk informasi selengkapnya, lihat FlushAdapterBuffersEx.
FreeAdapterObject
Penunjuk ke rutinitas yang ditentukan sistem yang merilis objek adaptor yang ditentukan setelah driver menyelesaikan semua operasi DMA. FreeAdapterObject hanya tersedia di versi 3 DMA_OPERATIONS. Untuk informasi selengkapnya, lihat FreeAdapterObject.
CancelMappedTransfer
Penunjuk ke rutinitas yang ditentukan sistem yang membatalkan transfer yang dipetakan. CancelMappedTransfer hanya tersedia di versi 3 DMA_OPERATIONS. Untuk informasi selengkapnya, lihat CancelMappedTransfer.
AllocateDomainCommonBuffer
Pointer ke rutinitas panggilan balik PALLOCATE_DOMAIN_COMMON_BUFFER untuk mengalokasikan buffer umum domain. Opsi ini tersedia dalam versi Windows 10 dan yang lebih baru.
FlushDmaBuffer
Penunjuk ke fungsi panggilan balik PFLUSH_DMA_BUFFER yang menghapus data apa pun yang tersisa di cache. Opsi ini tersedia dalam versi Windows 10 dan yang lebih baru.
JoinDmaDomain
Penunjuk ke fungsi panggilan balik PJOIN_DMA_DOMAIN yang bergabung dengan domain DMA yang ditentukan. Opsi ini tersedia dalam versi Windows 10 dan yang lebih baru.
LeaveDmaDomain
Penunjuk ke fungsi panggilan balik PLEAVE_DMA_DOMAIN yang meninggalkan domain DMA yang ditentukan. Opsi ini tersedia dalam versi Windows 10 dan yang lebih baru.
GetDmaDomain
Penunjuk ke fungsi panggilan balik PGET_DMA_DOMAIN yang mendapatkan handel ke domain DMA. Opsi ini tersedia dalam versi Windows 10 dan yang lebih baru.
AllocateCommonBufferWithBounds
Pointer ke fungsi panggilan balik PALLOCATE_COMMON_BUFFER_WITH_BOUNDS yang mengalokasikan memori untuk buffer umum dan memetakannya sehingga dapat diakses oleh perangkat master dan CPU. Buffer umum dapat diikat oleh alamat logis minimum dan maksimum opsional. Opsi ini tersedia mulai dari Windows 10 versi 1803.
AllocateCommonBufferVector
GetCommonBufferFromVectorByIndex
FreeCommonBufferFromVector
FreeCommonBufferVector
CreateCommonBufferFromMdl
Pointer ke fungsi panggilan balik PCREATE_COMMON_BUFFER_FROM_MDL yang akan membuat buffer umum DMA dari MDL dan memetakan memori cadangan sehingga dapat diakses oleh perangkat penguasa bus dan CPU. Panggilan balik opsional ini tersedia mulai dari Windows Server 2022.
Keterangan
Semua anggota struktur ini, dengan pengecualian Ukuran, adalah pointer ke fungsi yang digunakan driver untuk melakukan operasi DMA untuk perangkat mereka. Driver mendapatkan pointer ini dengan memanggil rutinitas IoGetDmaAdapter . Versi struktur DMA_OPERATIONS yang dikembalikan rutinitas ini tergantung pada anggota Versi struktur DEVICE_DESCRIPTION yang diteruskan ke IoGetDmaAdapter sebagai parameter input. Jika Versi DEVICE_DESCRIPTION_VERSION atau DEVICE_DESCRIPTION_VERSION1, versi 1 dari struktur ini dikembalikan. Jika Versi DEVICE_DESCRIPTION_VERSION2, versi 2 dari struktur ini dikembalikan. Versi 2 DMA_OPERATIONS tersedia dimulai dengan Windows XP. Jika Versi DEVICE_DESCRIPTION_VERSION3, versi 3 dari struktur ini dikembalikan. Versi 3 DMA_OPERATIONS tersedia dimulai dengan Windows 8.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Didukung dimulai dengan Windows 2000. |
Header | wdm.h (termasuk Wdm.h, Ntddk.h, Ntifs.h) |