структура 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) |