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


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

См. также

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