Compartir a través de


PBUILD_MDL_FROM_SCATTER_GATHER_LIST función de devolución de llamada (wdm.h)

La rutina BuildMdlFromScatterGatherList crea una MDL a partir de una lista de dispersión y recopilación asignada por el sistema.

Esta rutina está reservada para uso del sistema.

Sintaxis

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

Puntero a la estructura de DMA_ADAPTER devuelta por IoGetDmaAdapter que representa el adaptador de bus-master o el controlador DMA.

[in] ScatterGather

Puntero a la estructura SCATTER_GATHER_LIST pasada a la rutina AdapterListControl del controlador.

[in] OriginalMdl

Puntero al MDL original que el controlador usó para compilar la lista de dispersión y recopilación.

[out] TargetMdl

Puntero a una variable que usa la rutina para devolver el MDL creado para contener el búfer descrito por la lista de dispersión y recopilación. El valor devuelto puede ser el mismo que OriginalMdl.

Valor devuelto

BuildMdlFromScatterGatherList devuelve uno de los siguientes códigos de estado:

Código devuelto Descripción
STATUS_SUCCESS La operación se realizó correctamente.
STATUS_INVALID_PARAMETER El parámetro OriginalMdl es NULL.
STATUS_INSUFFICIENT_RESOURCES No hay suficiente memoria disponible para asignar una nueva MDL.
STATUS_NONE_MAPPED El sistema ya ha creado una nueva MDL para las ubicaciones de memoria en la lista de dispersión y recopilación. (Esto solo sucede si se llama a la rutina dos veces en la misma lista de dispersión o recopilación).

Comentarios

BuildMdlFromScatterGatherList no es una rutina del sistema a la que se puede llamar directamente por nombre. Solo el puntero de la dirección devuelta en una estructura de DMA_OPERATIONS puede llamar a esta rutina. Los controladores obtienen la dirección de esta rutina llamando a IoGetDmaAdapter con el miembro Version del parámetro DeviceDescription establecido en DEVICE_DESCRIPTION_VERSION2. Si IoGetDmaAdapter devuelve NULL, la rutina no está disponible en la plataforma.

Cuando un controlador crea una lista de dispersión o recopilación para escribir en un dispositivo, el sistema puede realizar una copia de los datos que se van a escribir y usar esa copia para realizar la operación DMA. Use esta rutina para acceder a las ubicaciones de memoria de la lista de dispersión y recopilación, independientemente de si esas ubicaciones son una copia.

Requisitos

Requisito Value
Cliente mínimo compatible Disponible en Windows XP y versiones posteriores de Windows.
Plataforma de destino Escritorio
Encabezado wdm.h (incluya Wdm.h)
IRQL <= DISPATCH_LEVEL
Reglas de cumplimiento de DDI IrqlDispatch(wdm)

Consulte también

BuildScatterGatherList

DEVICE_DESCRIPTION

DMA_ADAPTER

DMA_OPERATIONS

IoGetDmaAdapter

SCATTER_GATHER_LIST