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) |