estrutura DMA_OPERATIONS (wdm.h)
A estrutura DMA_OPERATIONS fornece uma tabela de ponteiros para funções que controlam a operação de um controlador DMA.
Sintaxe
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;
Membros
Size
O tamanho, em bytes, dessa estrutura DMA_OPERATIONS .
PutDmaAdapter
Um ponteiro para uma rotina definida pelo sistema para liberar uma estrutura DMA_ADAPTER . Para obter mais informações, consulte PutDmaAdapter.
AllocateCommonBuffer
Um ponteiro para uma rotina definida pelo sistema para alocar um buffer de DMA fisicamente contíguo. Para obter mais informações, consulte AllocateCommonBuffer.
FreeCommonBuffer
Um ponteiro para uma rotina definida pelo sistema para liberar um buffer de DMA fisicamente contíguo alocado anteriormente por AllocateCommonBuffer. Para obter mais informações, consulte FreeCommonBuffer.
AllocateAdapterChannel
Um ponteiro para uma rotina definida pelo sistema para alocar um canal para operações de DMA. Para obter mais informações, consulte AllocateAdapterChannel.
FlushAdapterBuffers
Um ponteiro para uma rotina definida pelo sistema para liberar dados do sistema ou do cache interno do adaptador de master de barramento após uma operação de DMA. Para obter mais informações, consulte FlushAdapterBuffers.
FreeAdapterChannel
Um ponteiro para uma rotina definida pelo sistema para liberar um canal alocado anteriormente para operações de DMA por AllocateAdapterChannel. Para obter mais informações, consulte FreeAdapterChannel.
FreeMapRegisters
Um ponteiro para uma rotina definida pelo sistema para liberar registros de mapa alocados para operações de DMA. Para obter mais informações, consulte FreeMapRegisters.
MapTransfer
Um ponteiro para uma rotina definida pelo sistema para iniciar uma operação de DMA. Para obter mais informações, consulte MapTransfer.
GetDmaAlignment
Um ponteiro para uma rotina definida pelo sistema para obter os requisitos de alinhamento de DMA do controlador. Para obter mais informações, consulte GetDmaAlignment.
ReadDmaCounter
Um ponteiro para uma rotina definida pelo sistema para obter a contagem de transferência atual para uma operação de DMA. Para obter mais informações, consulte ReadDmaCounter.
GetScatterGatherList
Um ponteiro para uma rotina definida pelo sistema que aloca registros de mapa e cria uma lista de dispersão/coleta para DMA. Para obter mais informações, consulte GetScatterGatherList.
PutScatterGatherList
Um ponteiro para uma rotina definida pelo sistema que libera registros de mapa e uma lista de dispersão/coleta após a conclusão de uma operação de DMA. Para obter mais informações, consulte PutScatterGatherList.
CalculateScatterGatherList
Um ponteiro para uma rotina definida pelo sistema que determina o tamanho do buffer necessário para manter a lista de dispersão/coleta que descreve um buffer de dados de E/S. Esse membro está disponível apenas nas versões 2 e posteriores do DMA_OPERATIONS. Para obter mais informações, consulte CalculateScatterGatherList.
BuildScatterGatherList
Um ponteiro para uma rotina definida pelo sistema que aloca registros de mapa e cria uma lista de dispersão/coleta para DMA em um buffer fornecido pelo driver. Esse membro está disponível apenas nas versões 2 e posteriores do DMA_OPERATIONS. Para obter mais informações, consulte BuildScatterGatherList.
BuildMdlFromScatterGatherList
Um ponteiro para uma rotina definida pelo sistema que cria um MDL correspondente a uma lista de dispersão/coleta. Esse membro está disponível apenas nas versões 2 e posteriores do DMA_OPERATIONS. Para obter mais informações, consulte BuildMdlFromScatterGatherList.
GetDmaAdapterInfo
Um ponteiro para uma rotina definida pelo sistema que descreve os recursos de um dispositivo DMA master barramento ou de um controlador de DMA do sistema. GetDmaAdapterInfo está disponível apenas na versão 3 do DMA_OPERATIONS. Para obter mais informações, consulte GetDmaAdapterInfo.
GetDmaTransferInfo
Um ponteiro para uma rotina definida pelo sistema que descreve os requisitos de alocação para uma lista de dispersão/coleta. Essa rotina substitui CalculateScatterGatherList. GetDmaTransferInfo está disponível apenas na versão 3 do DMA_OPERATIONS. Para obter mais informações, consulte GetDmaTransferInfo.
InitializeDmaTransferContext
Um ponteiro para uma rotina definida pelo sistema que inicializa um contexto de transferência de DMA opaco. O sistema operacional armazena a status interna de uma transferência de DMA nesse contexto. InitializeDmaTransferContext está disponível apenas na versão 3 do DMA_OPERATIONS. Para obter mais informações, consulte InitializeDmaTransferContext.
AllocateCommonBufferEx
Um ponteiro para uma rotina definida pelo sistema que aloca memória para um buffer comum e mapeia essa memória para que ela possa ser acessada pelo processador e por um dispositivo DMA. AllocateCommonBufferEx só está disponível na versão 3 do DMA_OPERATIONS. Para obter mais informações, consulte AllocateCommonBufferEx.
AllocateAdapterChannelEx
Um ponteiro para uma rotina definida pelo sistema que aloca os recursos necessários para uma transferência de DMA e, em seguida, chama a rotina AdapterControl fornecida pelo driver para iniciar a transferência de DMA. AllocateAdapterChannelEx está disponível apenas na versão 3 do DMA_OPERATIONS. Para obter mais informações, consulte AllocateAdapterChannelEx.
ConfigureAdapterChannel
Um ponteiro para uma rotina definida pelo sistema permite uma função personalizada implementada pelo controlador de DMA. ConfigureAdapterChannel só está disponível na versão 3 do DMA_OPERATIONS. Para obter mais informações, consulte ConfigureAdapterChannel.
CancelAdapterChannel
Um ponteiro para uma rotina definida pelo sistema que tenta cancelar uma solicitação pendente para alocar um canal DMA. CancelAdapterChannel só está disponível na versão 3 do DMA_OPERATIONS. Para obter mais informações, consulte CancelAdapterChannel.
MapTransferEx
Um ponteiro para uma rotina definida pelo sistema que configura registros de mapa para mapear os endereços físicos em uma lista de dispersão/coleta para os endereços lógicos necessários para fazer uma transferência de DMA. MapTransferEx está disponível apenas na versão 3 do DMA_OPERATIONS. Para obter mais informações, consulte MapTransferEx.
GetScatterGatherListEx
Um ponteiro para uma rotina definida pelo sistema que aloca recursos necessários para uma transferência de DMA, cria uma lista de dispersão/coleta e chama a rotina AdapterListControl fornecida pelo driver para iniciar a transferência de DMA. GetScatterGatherListEx está disponível apenas na versão 3 do DMA_OPERATIONS. Para obter mais informações, consulte GetScatterGatherListEx. Essa rotina é um wrapper de AllocateAdapterChannelEx e MapTransferEx.
BuildScatterGatherListEx
Um ponteiro para uma rotina definida pelo sistema que cria uma lista de dispersão/coleta em um buffer alocado pelo chamador e chama a rotina AdapterListControl fornecida pelo driver para iniciar a transferência de DMA. BuildScatterGatherListEx só está disponível na versão 3 do DMA_OPERATIONS. Para obter mais informações, consulte BuildScatterGatherListEx.
FlushAdapterBuffersEx
Um ponteiro para uma rotina definida pelo sistema que libera todos os dados que permanecem no cache interno do controlador de DMA do sistema ou em um cache interno do adaptador de master de barramento no final de uma transferência de DMA. Para um dispositivo que usa um controlador DMA do sistema, essa rotina cancela a transferência de DMA atual no controlador se a transferência não estiver concluída. FlushAdapterBuffersEx está disponível apenas na versão 3 do DMA_OPERATIONS. Para obter mais informações, consulte FlushAdapterBuffersEx.
FreeAdapterObject
Um ponteiro para uma rotina definida pelo sistema que libera o objeto adaptador especificado depois que um driver conclui todas as operações de DMA. FreeAdapterObject está disponível apenas na versão 3 do DMA_OPERATIONS. Para obter mais informações, consulte FreeAdapterObject.
CancelMappedTransfer
Um ponteiro para uma rotina definida pelo sistema que cancela uma transferência mapeada. CancelMappedTransfer está disponível apenas na versão 3 do DMA_OPERATIONS. Para obter mais informações, consulte CancelMappedTransfer.
AllocateDomainCommonBuffer
Um ponteiro para um PALLOCATE_DOMAIN_COMMON_BUFFER rotina de retorno de chamada para alocar um buffer comum de domínio. Essa opção está disponível em Windows 10 e versões posteriores.
FlushDmaBuffer
Um ponteiro para uma função de retorno de chamada PFLUSH_DMA_BUFFER que libera todos os dados restantes no cache. Essa opção está disponível em Windows 10 e versões posteriores.
JoinDmaDomain
Um ponteiro para uma função de retorno de chamada PJOIN_DMA_DOMAIN que une o domínio de DMA especificado. Essa opção está disponível em Windows 10 e versões posteriores.
LeaveDmaDomain
Um ponteiro para uma função de retorno de chamada PLEAVE_DMA_DOMAIN que deixa o domínio DMA especificado. Essa opção está disponível em Windows 10 e versões posteriores.
GetDmaDomain
Um ponteiro para a função de retorno de chamada PGET_DMA_DOMAIN que obtém um identificador para o domínio DMA. Essa opção está disponível em Windows 10 e versões posteriores.
AllocateCommonBufferWithBounds
Um ponteiro para uma função de retorno de chamada PALLOCATE_COMMON_BUFFER_WITH_BOUNDS que aloca a memória para um buffer comum e mapeia-a para que ela possa ser acessada por um dispositivo master e pela CPU. O buffer comum pode ser associado por um endereço lógico mínimo e máximo opcional. Essa opção está disponível a partir do Windows 10, versão 1803.
AllocateCommonBufferVector
GetCommonBufferFromVectorByIndex
FreeCommonBufferFromVector
FreeCommonBufferVector
CreateCommonBufferFromMdl
Um ponteiro para uma função de retorno de chamada PCREATE_COMMON_BUFFER_FROM_MDL que criará um buffer comum de DMA a partir de um MDL e mapeará a memória de suporte para que ela possa ser acessada por um dispositivo de domínio de barramento e pela CPU. Esse retorno de chamada opcional está disponível a partir do Windows Server 2022.
Comentários
Todos os membros dessa estrutura, com exceção de Size, são ponteiros para funções que os drivers usam para executar operações de AMD para seus dispositivos. Os drivers obtêm esses ponteiros chamando a rotina IoGetDmaAdapter . A versão da estrutura de DMA_OPERATIONS retornada por essa rotina depende do membro Version da estrutura DEVICE_DESCRIPTION que é passada para IoGetDmaAdapter como um parâmetro de entrada. Se Version for DEVICE_DESCRIPTION_VERSION ou DEVICE_DESCRIPTION_VERSION1, a versão 1 dessa estrutura será retornada. Se Version for DEVICE_DESCRIPTION_VERSION2, a versão 2 dessa estrutura será retornada. A versão 2 do DMA_OPERATIONS está disponível a partir do Windows XP. Se Version for DEVICE_DESCRIPTION_VERSION3, a versão 3 dessa estrutura será retornada. A versão 3 do DMA_OPERATIONS está disponível a partir do Windows 8.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Com suporte a partir do Windows 2000. |
Cabeçalho | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |