структура 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
Указатель на системную подпрограмму для очистки данных из внутреннего кэша системного или главного адаптера шины после операции 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 главного шины или системного контроллера 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 системы или во внутреннем кэше контроллера шины главного адаптера в конце передачи 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, которая выделяет память для общего буфера и сопоставляет ее таким образом, чтобы он мог получить доступ к главному устройству и ЦП. Общий буфер может быть привязан к необязательному минимальному и максимальному логическому адресу. Этот параметр доступен начиная с Windows 10 версии 1803.
AllocateCommonBufferVector
GetCommonBufferFromVectorByIndex
FreeCommonBufferFromVector
FreeCommonBufferVector
CreateCommonBufferFromMdl
Указатель на функцию обратного вызова PCREATE_COMMON_BUFFER_FROM_MDL, которая создаст общий буфер DMA из MDL и сопоставляет резервную память, чтобы получить доступ к нему с помощью устройства главного шины и ЦП. Этот необязательный обратный вызов доступен начиная с Windows Server 2022.
Замечания
Все члены этой структуры, за исключением размера, являются указателями на функции, используемые драйверами для выполнения операций DMA для своих устройств. Драйверы получают эти указатели путем вызова подпрограммы IoGetDmaAdapter. Версия структуры DMA_OPERATIONS, возвращаемой этой подпрограммой, зависит от элемента версии структуры 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 (include Wdm.h, Ntddk.h, Ntifs.h) |