estructura DMA_OPERATIONS (wdm.h)

La estructura DMA_OPERATIONS proporciona una tabla de punteros a funciones que controlan la operación de un controlador DMA.

Sintaxis

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;

Miembros

Size

Tamaño, en bytes, de esta estructura DMA_OPERATIONS .

PutDmaAdapter

Puntero a una rutina definida por el sistema para liberar una estructura de DMA_ADAPTER . Para obtener más información, vea PutDmaAdapter.

AllocateCommonBuffer

Puntero a una rutina definida por el sistema para asignar un búfer DMA físicamente contiguo. Para obtener más información, vea AllocateCommonBuffer.

FreeCommonBuffer

Puntero a una rutina definida por el sistema para liberar un búfer DMA físicamente contiguo asignado previamente por AllocateCommonBuffer. Para obtener más información, vea FreeCommonBuffer.

AllocateAdapterChannel

Puntero a una rutina definida por el sistema para asignar un canal para las operaciones DMA. Para obtener más información, vea AllocateAdapterChannel.

FlushAdapterBuffers

Puntero a una rutina definida por el sistema para vaciar los datos de la memoria caché interna del adaptador del sistema o bus-master después de una operación DMA. Para obtener más información, vea FlushAdapterBuffers.

FreeAdapterChannel

Puntero a una rutina definida por el sistema para liberar un canal asignado previamente para las operaciones DMA por AllocateAdapterChannel. Para obtener más información, consulte FreeAdapterChannel.

FreeMapRegisters

Puntero a una rutina definida por el sistema para liberar los registros de mapa asignados a las operaciones DMA. Para obtener más información, vea FreeMapRegisters.

MapTransfer

Puntero a una rutina definida por el sistema para iniciar una operación DMA. Para obtener más información, vea MapTransfer.

GetDmaAlignment

Puntero a una rutina definida por el sistema para obtener los requisitos de alineación de DMA del controlador. Para obtener más información, vea GetDmaAlignment.

ReadDmaCounter

Puntero a una rutina definida por el sistema para obtener el recuento de transferencias actual para una operación DMA. Para obtener más información, vea ReadDmaCounter.

GetScatterGatherList

Puntero a una rutina definida por el sistema que asigna registros de mapa y crea una lista de dispersión y recopilación para DMA. Para obtener más información, vea GetScatterGatherList.

PutScatterGatherList

Puntero a una rutina definida por el sistema que libera los registros de mapa y una lista de dispersión y recopilación una vez completada una operación DMA. Para obtener más información, vea PutScatterGatherList.

CalculateScatterGatherList

Puntero a una rutina definida por el sistema que determina el tamaño del búfer necesario para contener la lista de dispersión y recopilación que describe un búfer de datos de E/S. Este miembro solo está disponible en las versiones 2 y posteriores de DMA_OPERATIONS. Para obtener más información, vea CalculateScatterGatherList.

BuildScatterGatherList

Puntero a una rutina definida por el sistema que asigna registros de mapa y crea una lista de dispersión y recopilación para DMA en un búfer proporcionado por el controlador. Este miembro solo está disponible en las versiones 2 y posteriores de DMA_OPERATIONS. Para obtener más información, vea BuildScatterGatherList.

BuildMdlFromScatterGatherList

Puntero a una rutina definida por el sistema que crea una MDL correspondiente a una lista de dispersión y recopilación. Este miembro solo está disponible en las versiones 2 y posteriores de DMA_OPERATIONS. Para obtener más información, vea BuildMdlFromScatterGatherList.

GetDmaAdapterInfo

Puntero a una rutina definida por el sistema que describe las funcionalidades de un dispositivo DMA maestro de bus o un controlador DMA del sistema. GetDmaAdapterInfo solo está disponible en la versión 3 de DMA_OPERATIONS. Para obtener más información, vea GetDmaAdapterInfo.

GetDmaTransferInfo

Puntero a una rutina definida por el sistema que describe los requisitos de asignación de una lista de dispersión y recopilación. Esta rutina reemplaza CalculateScatterGatherList. GetDmaTransferInfo solo está disponible en la versión 3 de DMA_OPERATIONS. Para obtener más información, vea GetDmaTransferInfo.

InitializeDmaTransferContext

Puntero a una rutina definida por el sistema que inicializa un contexto de transferencia DMA opaco. El sistema operativo almacena el estado interno de una transferencia DMA en este contexto. InitializeDmaTransferContext solo está disponible en la versión 3 de DMA_OPERATIONS. Para obtener más información, vea InitializeDmaTransferContext.

AllocateCommonBufferEx

Puntero a una rutina definida por el sistema que asigna memoria para un búfer común y asigna esta memoria para que pueda acceder al procesador y a un dispositivo DMA. AllocateCommonBufferEx solo está disponible en la versión 3 de DMA_OPERATIONS. Para obtener más información, vea AllocateCommonBufferEx.

AllocateAdapterChannelEx

Puntero a una rutina definida por el sistema que asigna los recursos necesarios para una transferencia DMA y, a continuación, llama a la rutina AdapterControl proporcionada por el controlador para iniciar la transferencia DMA. AllocateAdapterChannelEx solo está disponible en la versión 3 de DMA_OPERATIONS. Para obtener más información, vea AllocateAdapterChannelEx.

ConfigureAdapterChannel

Un puntero a una rutina definida por el sistema habilita una función personalizada implementada por el controlador DMA. ConfigureAdapterChannel solo está disponible en la versión 3 de DMA_OPERATIONS. Para obtener más información, vea ConfigureAdapterChannel.

CancelAdapterChannel

Puntero a una rutina definida por el sistema que intenta cancelar una solicitud pendiente para asignar un canal DMA. CancelAdapterChannel solo está disponible en la versión 3 de DMA_OPERATIONS. Para obtener más información, consulte CancelAdapterChannel.

MapTransferEx

Puntero a una rutina definida por el sistema que configura los registros de asignación para asignar las direcciones físicas de una lista de dispersión y recopilación a las direcciones lógicas necesarias para realizar una transferencia DMA. MapTransferEx solo está disponible en la versión 3 de DMA_OPERATIONS. Para obtener más información, vea MapTransferEx.

GetScatterGatherListEx

Puntero a una rutina definida por el sistema que asigna los recursos necesarios para una transferencia DMA, crea una lista de dispersión o recopilación y, a continuación, llama a la rutina AdapterListControl proporcionada por el controlador para iniciar la transferencia DMA. GetScatterGatherListEx solo está disponible en la versión 3 de DMA_OPERATIONS. Para obtener más información, vea GetScatterGatherListEx. Esta rutina es un contenedor de AllocateAdapterChannelEx y MapTransferEx.

BuildScatterGatherListEx

Puntero a una rutina definida por el sistema que crea una lista de dispersión y recopilación en un búfer asignado por el autor de la llamada y, a continuación, llama a la rutina AdapterListControl proporcionada por el controlador para iniciar la transferencia DMA. BuildScatterGatherListEx solo está disponible en la versión 3 de DMA_OPERATIONS. Para obtener más información, vea BuildScatterGatherListEx.

FlushAdapterBuffersEx

Puntero a una rutina definida por el sistema que vacía los datos que permanecen en la caché interna del controlador DMA del sistema o en la caché interna del adaptador de bus-master al final de una transferencia DMA. Para un dispositivo que usa un controlador DMA del sistema, esta rutina cancela la transferencia DMA actual en el controlador si la transferencia no está completa. FlushAdapterBuffersEx solo está disponible en la versión 3 de DMA_OPERATIONS. Para obtener más información, vea FlushAdapterBuffersEx.

FreeAdapterObject

Puntero a una rutina definida por el sistema que libera el objeto de adaptador especificado después de que un controlador haya completado todas las operaciones de DMA. FreeAdapterObject solo está disponible en la versión 3 de DMA_OPERATIONS. Para obtener más información, vea FreeAdapterObject.

CancelMappedTransfer

Puntero a una rutina definida por el sistema que cancela una transferencia asignada. CancelMappedTransfer solo está disponible en la versión 3 de DMA_OPERATIONS. Para obtener más información, vea CancelMappedTransfer.

AllocateDomainCommonBuffer

Puntero a una rutina de devolución de llamada PALLOCATE_DOMAIN_COMMON_BUFFER para asignar un búfer común de dominio. Esta opción está disponible en Windows 10 y versiones posteriores.

FlushDmaBuffer

Puntero a una función de devolución de llamada PFLUSH_DMA_BUFFER que vacía los datos restantes en la memoria caché. Esta opción está disponible en Windows 10 y versiones posteriores.

JoinDmaDomain

Puntero a una PJOIN_DMA_DOMAIN función de devolución de llamada que combina el dominio DMA especificado. Esta opción está disponible en Windows 10 y versiones posteriores.

LeaveDmaDomain

Puntero a una función de devolución de llamada PLEAVE_DMA_DOMAIN que sale del dominio DMA especificado. Esta opción está disponible en Windows 10 y versiones posteriores.

GetDmaDomain

Puntero a la función de devolución de llamada PGET_DMA_DOMAIN que obtiene un identificador para el dominio DMA. Esta opción está disponible en Windows 10 y versiones posteriores.

AllocateCommonBufferWithBounds

Puntero a una función de devolución de llamada PALLOCATE_COMMON_BUFFER_WITH_BOUNDS que asigna la memoria de un búfer común y la asigna para que un dispositivo maestro y la CPU puedan acceder a él. El búfer común se puede enlazar mediante una dirección lógica mínima y máxima opcional. Esta opción está disponible a partir de Windows 10, versión 1803.

AllocateCommonBufferVector

GetCommonBufferFromVectorByIndex

FreeCommonBufferFromVector

FreeCommonBufferVector

CreateCommonBufferFromMdl

Puntero a una función de devolución de llamada PCREATE_COMMON_BUFFER_FROM_MDL que creará un búfer común de DMA a partir de una MDL y asigna la memoria de respaldo para que un dispositivo de maestro de bus pueda acceder a él y la CPU. Esta devolución de llamada opcional está disponible a partir de Windows Server 2022.

Comentarios

Todos los miembros de esta estructura, a excepción de Size, son punteros a funciones que los controladores usan para realizar operaciones DMA para sus dispositivos. Los controladores obtienen estos punteros llamando a la rutina IoGetDmaAdapter . La versión de la estructura de DMA_OPERATIONS que devuelve esta rutina depende del miembro Version de la estructura DEVICE_DESCRIPTION que se pasa a IoGetDmaAdapter como parámetro de entrada. Si Version es DEVICE_DESCRIPTION_VERSION o DEVICE_DESCRIPTION_VERSION1, se devuelve la versión 1 de esta estructura. Si Version es DEVICE_DESCRIPTION_VERSION2, se devuelve la versión 2 de esta estructura. La versión 2 de DMA_OPERATIONS está disponible a partir de Windows XP. Si Version es DEVICE_DESCRIPTION_VERSION3, se devuelve la versión 3 de esta estructura. La versión 3 de DMA_OPERATIONS está disponible a partir de Windows 8.

Requisitos

Requisito Value
Cliente mínimo compatible Se admite a partir de Windows 2000.
Encabezado wdm.h (incluya Wdm.h, Ntddk.h, Ntifs.h)

Consulte también

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