PBUILD_MDL_FROM_SCATTER_GATHER_LIST função de retorno de chamada (wdm.h)

A rotina BuildMdlFromScatterGatherList cria um MDL de uma lista de dispersão/coleta alocada pelo sistema.

Nota Essa rotina é reservada para uso do sistema.
 

Sintaxe

PBUILD_MDL_FROM_SCATTER_GATHER_LIST PbuildMdlFromScatterGatherList;

NTSTATUS PbuildMdlFromScatterGatherList(
  [in]  PDMA_ADAPTER DmaAdapter,
  [in]  PSCATTER_GATHER_LIST ScatterGather,
  [in]  PMDL OriginalMdl,
  [out] PMDL *TargetMdl
)
{...}

Parâmetros

[in] DmaAdapter

Ponteiro para a estrutura DMA_ADAPTERretornada por IoGetDmaAdapter que representa o adaptador mestre do barramento ou o controlador DMA.

[in] ScatterGather

Ponteiro para a estrutura SCATTER_GATHER_LIST passado para a rotina AdapterListControl do driver.

[in] OriginalMdl

Ponteiro para o MDL original que o driver usou para criar a lista de dispersão/coleta.

[out] TargetMdl

Ponteiro para uma variável que a rotina usa para retornar o MDL criado para manter o buffer descrito pela lista de dispersão/coleta. O valor retornado pode ser o mesmo que OriginalMdl.

Valor retornado

BuildMdlFromScatterGatherList retorna um dos seguintes códigos de status:

Código de retorno Descrição
STATUS_SUCCESS
A operação foi realizada com êxito.
STATUS_INVALID_PARAMETER
O parâmetro OriginalMdl é NULL.
STATUS_INSUFFICIENT_RESOURCES
Não há memória suficiente disponível para alocar um novo MDL.
STATUS_NONE_MAPPED
O sistema já criou um novo MDL para os locais de memória na lista de dispersão/coleta. (Isso só acontecerá se a rotina for chamada duas vezes na mesma lista de dispersão/coleta.)

Comentários

BuildMdlFromScatterGatherList não é uma rotina do sistema que pode ser chamada diretamente pelo nome. Essa rotina pode ser chamada somente pelo ponteiro do endereço retornado em uma estrutura DMA_OPERATIONS . Os drivers obtêm o endereço dessa rotina chamando IoGetDmaAdapter com o membro Version do parâmetro DeviceDescription definido como DEVICE_DESCRIPTION_VERSION2. Se IoGetDmaAdapter retornar NULL, a rotina não estará disponível em sua plataforma.

Quando um driver cria uma lista de dispersão/coleta para gravar em um dispositivo, o sistema pode fazer uma cópia dos dados a serem gravados e usar essa cópia para executar a operação de DMA. Use essa rotina para acessar os locais de memória na lista de dispersão/coleta, independentemente de esses locais serem uma cópia.

Requisitos

   
Cliente mínimo com suporte Disponível no Windows XP e versões posteriores do Windows.
Plataforma de Destino Área de Trabalho
Cabeçalho wdm.h (include Wdm.h)
IRQL <= DISPATCH_LEVEL
Regras de conformidade DDI IrqlDispatch(wdm)

Confira também

BuildScatterGatherList

DEVICE_DESCRIPTION

DMA_ADAPTER

DMA_OPERATIONS

IoGetDmaAdapter

SCATTER_GATHER_LIST