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)

Confira também

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