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.
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 de DMA_ADAPTER retornada por IoGetDmaAdapter que representa o adaptador de master de barramento ou o controlador de DMA.
[in] ScatterGather
Ponteiro para a estrutura SCATTER_GATHER_LIST passada 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.
Retornar valor
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ó acontece 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 só pode ser chamada por 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
Requisito | Valor |
---|---|
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 (inclua Wdm.h) |
IRQL | <= DISPATCH_LEVEL |
Regras de conformidade de DDI | IrqlDispatch(wdm) |