Bagikan melalui


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)

Lihat juga

AllocateAdapterChannel

AllocateAdapterChannelEx

AllocateCommonBuffer

AllocateCommonBufferEx

BuildMdlFromScatterGatherList

BuildScatterGatherList

BuildScatterGatherListEx

CalculateScatterGatherList

CancelAdapterChannel

CancelMappedTransfer

MengonfigurasiAdapterChannel

DEVICE_DESCRIPTION

FlushAdapterBuffers

FlushAdapterBuffersEx

FreeAdapterChannel

FreeAdapterObject

FreeCommonBuffer

FreeMapRegisters

GetDmaAdapterInfo

GetDmaAlignment

GetDmaTransferInfo

GetScatterGatherList

GetScatterGatherListEx

InitializeDmaTransferContext

IoGetDmaAdapter

MapTransfer

MapTransferEx

PutDmaAdapter

PutScatterGatherList

ReadDmaCounter