Поделиться через


структура DMA_OPERATIONS (wdm.h)

Структура DMA_OPERATIONS содержит таблицу указателей на функции, управляющие работой контроллера DMA.

Синтаксис

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;

Члены

Size

Размер структуры DMA_OPERATIONS в байтах.

PutDmaAdapter

Указатель на определяемую системой подпрограмму для освобождения структуры DMA_ADAPTER . Дополнительные сведения см. в разделе PutDmaAdapter.

AllocateCommonBuffer

Указатель на определяемую системой подпрограмму для выделения физически непрерывного буфера DMA. Дополнительные сведения см. в разделе AllocateCommonBuffer.

FreeCommonBuffer

Указатель на определяемую системой подпрограмму для освобождения физически непрерывного буфера DMA, ранее выделенного AllocateCommonBuffer. Дополнительные сведения см. в разделе FreeCommonBuffer.

AllocateAdapterChannel

Указатель на определяемую системой подпрограмму для выделения канала для операций DMA. Дополнительные сведения см. в разделе AllocateAdapterChannel.

FlushAdapterBuffers

Указатель на определяемую системой подпрограмму для очистки данных из системного или master адаптера шины после операции DMA. Дополнительные сведения см. в разделе FlushAdapterBuffers.

FreeAdapterChannel

Указатель на определяемую системой подпрограмму для освобождения канала, ранее выделенного для операций DMA с помощью AllocateAdapterChannel. Дополнительные сведения см. в разделе FreeAdapterChannel.

FreeMapRegisters

Указатель на определяемую системой подпрограмму для свободных регистров карты, выделенных для операций DMA. Дополнительные сведения см. в разделе FreeMapRegisters.

MapTransfer

Указатель на определяемую системой подпрограмму для начала операции DMA. Дополнительные сведения см. в разделе MapTransfer.

GetDmaAlignment

Указатель на определяемую системой подпрограмму для получения требований к выравниванию DMA контроллера. Дополнительные сведения см. в разделе GetDmaAlignment.

ReadDmaCounter

Указатель на определяемую системой подпрограмму для получения текущего количества передач для операции DMA. Дополнительные сведения см. в разделе ReadDmaCounter.

GetScatterGatherList

Указатель на определяемую системой подпрограмму, которая выделяет регистры карты и создает список точечной и сборной для DMA. Дополнительные сведения см. в разделе GetScatterGatherList.

PutScatterGatherList

Указатель на определяемую системой подпрограмму, которая освобождает регистры карт и список точечной и сборной после завершения операции DMA. Дополнительные сведения см. в разделе PutScatterGatherList.

CalculateScatterGatherList

Указатель на определяемую системой подпрограмму, которая определяет размер буфера, необходимый для хранения списка точечной и сборной данных, описывающего буфер данных ввода-вывода. Этот элемент доступен только в версиях 2 и более поздних DMA_OPERATIONS. Дополнительные сведения см. в разделе CalculateScatterGatherList.

BuildScatterGatherList

Указатель на определяемую системой подпрограмму, которая выделяет регистры карты и создает список точечной и сборной для DMA в буфере, предоставленном драйвером. Этот элемент доступен только в версиях 2 и более поздних DMA_OPERATIONS. Дополнительные сведения см. в разделе BuildScatterGatherList.

BuildMdlFromScatterGatherList

Указатель на определяемую системой подпрограмму, которая создает MDL, соответствующий точечным или сборным спискам. Этот элемент доступен только в версиях 2 и более поздних DMA_OPERATIONS. Дополнительные сведения см. в разделе BuildMdlFromScatterGatherList.

GetDmaAdapterInfo

Указатель на определяемую системой подпрограмму, описывающую возможности устройства DMA master шины или системного контроллера DMA. GetDmaAdapterInfo доступен только в версии 3 DMA_OPERATIONS. Дополнительные сведения см. в разделе GetDmaAdapterInfo.

GetDmaTransferInfo

Указатель на определяемую системой подпрограмму, которая описывает требования к выделению для точечных и сборных списков. Эта подпрограмма заменяет CalculateScatterGatherList. GetDmaTransferInfo доступен только в версии 3 DMA_OPERATIONS. Дополнительные сведения см. в разделе GetDmaTransferInfo.

InitializeDmaTransferContext

Указатель на системную подпрограмму, которая инициализирует непрозрачный контекст передачи DMA. Операционная система сохраняет внутреннее состояние передачи DMA в этом контексте. InitializeDmaTransferContext доступен только в версии 3 DMA_OPERATIONS. Дополнительные сведения см. в разделе InitializeDmaTransferContext.

AllocateCommonBufferEx

Указатель на определяемую системой подпрограмму, которая выделяет память для общего буфера и сопоставляет эту память таким образом, чтобы к ней мог обращаться процессор и устройство DMA. AllocateCommonBufferEx доступен только в версии 3 DMA_OPERATIONS. Дополнительные сведения см. в разделе AllocateCommonBufferEx.

AllocateAdapterChannelEx

Указатель на определяемую системой подпрограмму, которая выделяет ресурсы, необходимые для передачи DMA, а затем вызывает предоставленную драйвером подпрограмму AdapterControl для инициации передачи DMA. AllocateAdapterChannelEx доступен только в версии 3 DMA_OPERATIONS. Дополнительные сведения см. в разделе AllocateAdapterChannelEx.

ConfigureAdapterChannel

Указатель на определяемую системой подпрограмму включает пользовательскую функцию, реализованную контроллером DMA. ConfigureAdapterChannel доступен только в версии 3 DMA_OPERATIONS. Дополнительные сведения см. в разделе ConfigureAdapterChannel.

CancelAdapterChannel

Указатель на определяемую системой подпрограмму, которая пытается отменить ожидающий запрос на выделение канала DMA. CancelAdapterChannel доступен только в версии 3 DMA_OPERATIONS. Дополнительные сведения см. в разделе CancelAdapterChannel.

MapTransferEx

Указатель на определяемую системой подпрограмму, которая настраивает регистры карты для сопоставления физических адресов в списке точечных и сборных данных с логическими адресами, необходимыми для передачи DMA. MapTransferEx доступен только в версии 3 DMA_OPERATIONS. Дополнительные сведения см. в разделе MapTransferEx.

GetScatterGatherListEx

Указатель на определяемую системой подпрограмму, которая выделяет ресурсы, необходимые для передачи DMA, создает список точечных и сборных данных, а затем вызывает предоставленную драйвером подпрограмму AdapterListControl для инициации передачи DMA. GetScatterGatherListEx доступен только в версии 3 DMA_OPERATIONS. Дополнительные сведения см. в разделе GetScatterGatherListEx. Эта подпрограмма является оболочкой AllocateAdapterChannelEx и MapTransferEx.

BuildScatterGatherListEx

Указатель на определяемую системой подпрограмму, которая создает список точечной и сборной в буфере, выделенном вызывающим объектом, а затем вызывает предоставленную драйвером подпрограмму AdapterListControl для инициации передачи DMA. BuildScatterGatherListEx доступен только в версии 3 DMA_OPERATIONS. Дополнительные сведения см. в разделе BuildScatterGatherListEx.

FlushAdapterBuffersEx

Указатель на определяемую системой подпрограмму, которая очищает все данные, которые остаются во внутреннем кэше контроллера DMA системы или во внутреннем кэше адаптера master шины в конце передачи DMA. Для устройства, использующего системный контроллер DMA, эта процедура отменяет текущую передачу DMA на контроллере, если передача не завершена. FlushAdapterBuffersEx доступен только в версии 3 DMA_OPERATIONS. Дополнительные сведения см. в разделе FlushAdapterBuffersEx.

FreeAdapterObject

Указатель на определяемую системой подпрограмму, которая освобождает указанный объект адаптера после завершения драйвера всех операций DMA. FreeAdapterObject доступен только в версии 3 DMA_OPERATIONS. Дополнительные сведения см. в разделе FreeAdapterObject.

CancelMappedTransfer

Указатель на определяемую системой подпрограмму, которая отменяет сопоставленную передачу. CancelMappedTransfer доступен только в версии 3 DMA_OPERATIONS. Дополнительные сведения см. в разделе CancelMappedTransfer.

AllocateDomainCommonBuffer

Указатель на PALLOCATE_DOMAIN_COMMON_BUFFER подпрограмму обратного вызова для выделения общего буфера домена. Этот параметр доступен в Windows 10 и более поздних версиях.

FlushDmaBuffer

Указатель на функцию обратного вызова PFLUSH_DMA_BUFFER, которая очищает все данные, оставшиеся в кэше. Этот параметр доступен в Windows 10 и более поздних версиях.

JoinDmaDomain

Указатель на функцию обратного вызова PJOIN_DMA_DOMAIN , которая присоединяется к указанному домену DMA. Этот параметр доступен в Windows 10 и более поздних версиях.

LeaveDmaDomain

Указатель на функцию обратного вызова PLEAVE_DMA_DOMAIN, которая покидает указанный домен DMA. Этот параметр доступен в Windows 10 и более поздних версиях.

GetDmaDomain

Указатель на функцию обратного вызова PGET_DMA_DOMAIN , которая получает дескриптор домена DMA. Этот параметр доступен в Windows 10 и более поздних версиях.

AllocateCommonBufferWithBounds

Указатель на функцию обратного вызова PALLOCATE_COMMON_BUFFER_WITH_BOUNDS, которая выделяет память для общего буфера и сопоставляет ее таким образом, чтобы к ней могли обращаться master устройство и ЦП. Общий буфер может быть привязан необязательным минимальным и максимальным логическим адресом. Этот параметр доступен начиная с Windows 10 версии 1803.

AllocateCommonBufferVector

GetCommonBufferFromVectorByIndex

FreeCommonBufferFromVector

FreeCommonBufferVector

CreateCommonBufferFromMdl

Указатель на PCREATE_COMMON_BUFFER_FROM_MDL функцию обратного вызова, которая создает общий буфер DMA из MDL и сопоставляет резервную память таким образом, чтобы к ней могли обращаться устройства шины и ЦП. Этот необязательный обратный вызов доступен начиная с Windows Server 2022.

Комментарии

Все элементы этой структуры, за исключением Размера, являются указателями на функции, которые драйверы используют для выполнения операций DMA для своих устройств. Драйверы получают эти указатели, вызывая подпрограмму IoGetDmaAdapter . Версия структуры DMA_OPERATIONS , возвращаемой этой подпрограммой, зависит от элемента Versionструктуры DEVICE_DESCRIPTION , передаваемой в IoGetDmaAdapter в качестве входного параметра. Если версия DEVICE_DESCRIPTION_VERSION или DEVICE_DESCRIPTION_VERSION1, возвращается версия 1 этой структуры. Если версия DEVICE_DESCRIPTION_VERSION2, возвращается версия 2 этой структуры. Версия 2 DMA_OPERATIONS доступна начиная с Windows XP. Если версия DEVICE_DESCRIPTION_VERSION3, возвращается версия 3 этой структуры. Версия 3 DMA_OPERATIONS доступна начиная с Windows 8.

Требования

Требование Значение
Минимальная версия клиента Поддерживается начиная с Windows 2000.
Верхняя часть wdm.h (включая Wdm.h, Ntddk.h, Ntifs.h)

См. также раздел

AllocateAdapterChannel

AllocateAdapterChannelEx

AllocateCommonBuffer

AllocateCommonBufferEx

BuildMdlFromScatterGatherList

BuildScatterGatherList

BuildScatterGatherListEx

CalculateScatterGatherList

CancelAdapterChannel

CancelMappedTransfer

ConfigureAdapterChannel

DEVICE_DESCRIPTION

FlushAdapterBuffers

FlushAdapterBuffersEx

FreeAdapterChannel

FreeAdapterObject

FreeCommonBuffer

FreeMapRegisters

GetDmaAdapterInfo

GetDmaAlignment

GetDmaTransferInfo

GetScatterGatherList

GetScatterGatherListEx

InitializeDmaTransferContext

IoGetDmaAdapter

MapTransfer

MapTransferEx

PutDmaAdapter

PutScatterGatherList

ReadDmaCounter